#include <cstdio>
#include <cassert>
#include <cstdlib>
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pll = pair<ll, ll>;
static FILE *fr, *fw;

// Declaring variables
static int N;
static int* V;
static long long int numero_ribaltamenti;

struct segtree {
	int n;
	vector<ll> st;
	
	void build(int i, int l, int r, vector<ll> &v) {
		if(r-l == 1) {
			st[i] = v[l];
			return;
		}
		
		int m = (l+r)/2;
		
		build(2*i, l, m, v);
		build(2*i+1, m, r, v);
		
		st[i] = st[2*i] + st[2*i+1];
	}
	
	void build(vector<ll> &v) {
		n = v.size();
		st.resize(4*n);
		build(1, 0, n, v);
	}
	
	void update(int i, int l, int r, int pos, ll x) {
		if(r-l == 1) {
			st[i] = x;
			return;
		}
		
		int m = (l+r)/2;
		
		if(pos < m) {
			update(2*i, l, m, pos, x);
		} else {			
			update(2*i+1, m, r, pos, x);
		}
		
		st[i] = st[2*i] + st[2*i+1];
	}
	
	void update(int pos, ll x) {
		update(1, 0, n, pos, x);
	}
	
	ll query(int i, int l, int r, int left, int right) {
		if(l >= left and r <= right) return st[i];
		if(l >= right or r <= left) return 0;
		int m = (l+r)/2;
		return query(2*i, l, m, left, right) + query(2*i+1, m, r, left, right);
	}
	
	ll query(int l, int r) {
		return query(1, 0, n, l, r);
	}
};

ll bubblestort(int n, vector<ll> &v) {
	vector<int> inv(n);
	
	for(int i = 0; i < n; i++) {
		inv[v[i]] = i;
	}
	
	ll ans = 0;
	
	segtree st;
	
	vector<ll> fake(n, 0);
	st.build(fake);
	
	for(int i = 0; i < n; i++) {
		int pos = inv[i];
		ans += pos-i;
		ans -= st.query(pos, n);
		st.update(pos, 1);
	}
	
	return ans;
}

long long int paletta_sort(int n, int* V) {
	vector<ll> v(n);
	
	for(int i = 0; i < n; i++) v[i] = *(V+i);
	
	for(int i = 0; i < n; i++) if(v[i]%2 != i%2) return -1;
	
	vector<ll> o;
	vector<ll> e;
	
	for(int i = 0; i < n; i++) {
		if(i%2 == 0) {
			e.push_back(v[i]/2);
		} else {
			o.push_back(v[i]/2);
		}
	}
	
	return bubblestort(e.size(), e) + bubblestort(o.size(), o);
}

#ifndef EVAL

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;
}

#endif
