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

static FILE *fr, *fw;

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

#include <iostream>
#include <vector>
using namespace std;
using ll = long long;

ll mergeSort(int l, int r, vector<int>& v, vector<int>& tmp) {

  if (r-l==1) return 0;

  int mid = l + (r-l) / 2;
  ll sum = 0;
  sum += mergeSort(l,mid,v,tmp);
  sum += mergeSort(mid,r,v,tmp);

  int ptr1 = 0, ptr2 = 0;

  while (ptr1 < mid-l && ptr2 < r-mid) {

    if (v[l+ptr1] < v[mid+ptr2]) {
      tmp[l+ptr1+ptr2] = v[l+ptr1];
      ptr1++;
    } else {
      tmp[l+ptr1+ptr2] = v[mid+ptr2];
      sum+=mid-l-ptr1;
      ptr2++;
    }
    
  }

  while (ptr1 < mid-l) {
    tmp[l+ptr1+ptr2] = v[l+ptr1];
    ptr1++;
  }

  while (ptr2 < r-mid) {
    tmp[l+ptr1+ptr2] = v[mid+ptr2];
    ptr2++;
  }

  for (int i = l; i < r; i++) {
    v[i] = tmp[i];
  }

  return sum;
  
}

ll sort(vector<int>& v) {
  vector<int> temp; temp.resize(v.size());
  return mergeSort(0,v.size(),v,temp);
}

long long int paletta_sort(int N, int* V) {

  vector<int> a, b; a.reserve(N/2+N%2), b.reserve(N/2);
  for (int i = 0; i < N; i++) {

    if (i%2!=V[i]%2) return -1;
    if (i%2) b.push_back(V[i]);
    else a.push_back(V[i]);
    
  }
  
  return sort(a) + sort(b);
  
}

