#include <vector>
#include <iostream>

using namespace std;

long long steps = 0;

void merge(vector<int>& V, int l, int r){
  if (l>=r){
    return;
  }
  int mid = (l+r)/2;
  merge(V, l, mid);
  merge(V, mid+1, r);
  vector<int> Vs, Vd;
  for(int i = l; i<r+1; i++){
    if (i<= mid){
      Vs.push_back(V[i]);
    }
    else{
      Vd.push_back(V[i]);
    }
  }
  int is = 0, id = 0;
  while(is<Vs.size() && id<Vd.size()){
    if(Vs[is]<= Vd[id]){
      is++;
      continue;
    }
    else{
      V[l+is+id] = Vd[id];
      steps += Vs.size()-is+id;
      id++;
      continue;
    }
  }
  if(id==Vd.size()){
    for(int i = is; i<Vs.size(); i++){
      V[i+l+id]=Vs[i];
    }
  }
  else{
    for(int i = id; i<Vd.size(); i++){
      V[i+l+is]=Vd[i];
    }
  }
  return;
}


long long paletta_sort(int N, int V[]) {
  vector<int> V1, V2;
  long long m = -1;
  for(int i = 0; i<N; i++){
    if(V[i]%2 == i%2){
      if(i%2==0){
        V1.push_back(V[i]);
      }
      else{
        V2.push_back(V[i]);
      }
    }
    else{
      return -1;
    }
  }
  merge(V1, 0, V1.size()-1);
  merge(V2, 0, V2.size()-1);
  int p = -1;
  bool sorted = true;
  for(int i = 0; i<N; i++){
    if(i%2==0){
      sorted = V1[i/2]>p;
      p = V1[i/2];
    }
    else{
      sorted = V2[i/2]>p;
      p = V2[i/2];
    }
    if (!sorted){
      return m;
    }
  }
  return steps;
}