#include <bits/stdc++.h>

using namespace std;

vector<int> A;
long long inv;

// !! start incluso end NON incluso

void merge(int sx, int ex, int sy, int ey){
    int i=sx;
    int j=sy;
    vector<int> ordered;
    while(i != ex && j != ey){
        if(A[i] <= A[j]) {
            ordered.push_back(A[i]);
            i++;
        }
        else {
            inv += ex-i;
            ordered.push_back(A[j]);
            j++;
        }
    }
    while(i != ex){
        ordered.push_back(A[i]);
        i++;
    }

    while(j != ey){
        ordered.push_back(A[j]);
        j++;
    }

    for(int i=0; i<ordered.size(); i++){
        A[sx+i] = ordered[i];
    }
}

void merge_count(int s, int e){
    if(e == s+1) return;

    int mid = (s+e)/2;
    merge_count(s, mid);
    merge_count(mid, e);
    merge(s, mid, mid, e);
}

long long paletta_sort(int N, int V[]) {
    vector<int> pari;
    vector<int> dispari;

    for(int i=0; i<N; i++){
        if (i%2 != V[i]%2) return -1;
    }

    for(int i = 0; i<N; i++){
        if(i%2 == 0) pari.push_back(V[i]);
        else dispari.push_back(V[i]);
    }

    A = pari;
    merge_count(0, A.size());
    A = dispari;
    merge_count(0, A.size());
    return inv;
}
