#include <bits/stdc++.h>
using namespace std;
using ll=long long;

struct segment_tree{
  ll N;
  vector<ll> tree;
  segment_tree() {}
  segment_tree(vector<ll> lis){
    N=lis.size();
    tree.resize(N*4);
  }
  void aggiungi(ll x){
    aggiungi(1,0,N,x);
  }
  void aggiungi(ll i,ll l,ll r,ll x){
    if (r-l==1){
      tree[i]++;
      return;
    }
    ll mid=(l+r)/2;
    if (x<mid) aggiungi(i*2,l,mid,x);
    else aggiungi(i*2+1,mid,r,x);
    tree[i]=tree[i*2]+tree[i*2+1];
  }
  ll somma(ll ql,ll qr){
    return somma(1,ql,qr,0,N);
  }
  ll somma(ll i,ll ql,ll qr,ll l,ll r){
    if (r<=ql || l>=qr) return 0;
    if (l>=ql && r<=qr) return tree[i];
    ll mid=(l+r)/2;
    return somma(i*2,ql,qr,l,mid)+somma(i*2+1,ql,qr,mid,r);
  }
};

segment_tree st;

ll ordina(vector<ll> lis){
  ll ris=0;
  ll N=lis.size();
  vector<ll> nullo(N*2);
  st=segment_tree(nullo);
  for (int i=0;i<N;i++){
    ris+=st.somma(lis[i]+1,N*2+1);
    st.aggiungi(lis[i]);
  }
  return ris;
}

long long paletta_sort(int N, int V[]) {
  vector<ll> P,D;
  for (int i=0;i<N;i++){
    if (i%2!=V[i]%2) return -1;
    else if(i%2==0) P.push_back(V[i]);
    else D.push_back(V[i]);
  }
  
  return ordina(D)+ordina(P);
}
