#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;
}






#include <cstdio>
#include <cassert>
#include <cstdlib>

static FILE *fr, *fw;

// Declaring variables
static int N;
static int* V;
static long long int numero_ribaltamenti;

// Declaring functions
long long int paletta_sort(int N, int* V);

int main() {
	fr = fopen("input.txt", "r");
	fw = fopen("output.txt", "w");

	// Reading input
	fscanf(fr, "%d ", &N);
	V = (int*)malloc(N * sizeof(int));
	for (int i0 = 0; i0 < N; i0++) {
		fscanf(fr, "%d ", &V[i0]);
	}

	// Calling functions
	numero_ribaltamenti = paletta_sort(N, V);

	// Writing output
	fprintf(fw, "%lld\n", numero_ribaltamenti);
	
	fclose(fr);
	fclose(fw);
	return 0;
}
