#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,a[20],b[20],now,ans=0x3f3f3f3f3f3f3f,c[20];
bool vis[20];
ll s[20];
struct node{
ll now,whr;
}E[20],e[20];
ll lowbit(ll x){
return x&(-x);
}
void add(ll pos,ll x){
while(pos<=n){
s[pos]+=x;
pos+=lowbit(pos);
}
}
ll check(ll pos){
ll ret=0;
while(pos){
ret+=s[pos];
pos-=lowbit(pos);
}
return ret;
}
bool cmp(node a,node b){
if(a.now!=b.now) return a.now<b.now;
else return a.whr<b.whr;
}
void dfs(ll h,ll sum){
bool flag=(h==n+1&&E[1].now==1&&E[2].now==3&&E[3].now==1);
if(h==n+1){
for(ll i=1;i<=n;i++) e[i]=E[i];
if(sum%2==1) return ;
else{
for(ll i=1;i<=n;i++) vis[i]=false;
sort(e+1,e+n+1,cmp);
queue<ll> lst,lst2;
bool FLAG=true;
// if(flag) cout<<"GOOD\n";
// if(flag) for(ll i=1;i<=n;i++) cout<<e[i].now<<" "<<e[i].whr<<endl;
for(ll i=1;i<=n;i++){
// if(flag) cout<<i<<endl;
if(e[i].now!=e[i-1].now&&(!lst.empty()||!lst2.empty())){
// if(flag) cout<<"bad1\n";
// if(flag){
// while(!lst.empty()){
// cout<<lst.front()<<" ";
// lst.pop();
// }
// while(!lst2.empty()){
// cout<<lst2.front()<<" ";
// lst2.pop();
// }
// }
return ;
}
if(c[e[i].whr]){
if(abs(e[i].whr-i)%2==0){
vis[i]=true;
FLAG=true;
}
else FLAG=false;
}
else{
// if(flag&&i==2) cout<<e[i].whr<<endl;
if(abs(e[i].whr-i)%2==1){
vis[i]=true;
FLAG=true;
}
else FLAG=false;
}
if(!FLAG){
if(i%2==1){
if(lst.size()==0){
vis[i]=false;
lst2.push(i);
}
else{
if(e[lst.front()].now!=e[i].now){
// if(flag) cout<<"bad2\n";
return ;
}
else{
swap(e[i],e[lst.front()]);
vis[lst.front()]=false;
ll t=lst.front();
lst.pop();
while(t+2<i){
if(e[t].now!=e[t+2].now) break;
if(e[t].whr>e[t+2].whr) swap(e[t],e[t+2]);
t+=2;
}
}
}
}
else{
if(lst2.size()==0){
vis[i]=false;
lst.push(i);
}
else{
if(e[lst2.front()].now!=e[i].now){
// if(flag) cout<<"bad3\n";
return ;
}
else{
swap(e[i],e[lst2.front()]);
vis[lst2.front()]=false;
ll t=lst2.front();
lst2.pop();
while(t+2<i){
if(e[t].now!=e[t+2].now) break;
if(e[t].whr>e[t+2].whr) swap(e[t],e[t+2]);
t+=2;
}
}
}
}
}
// if(flag) cout<<i<<" "<<lst.size()<<" "<<lst2.size()<<endl;
}
if(!lst.empty()||!lst2.empty()) return ;
ll Ans=0;
// for(ll i=1;i<=n;i++) Ans+=abs(i-e[i].whr);
for(ll i=0;i<=n;i++) s[i]=0;
for(ll i=1;i<=n;i++){
ll t=check(e[i].whr);
Ans+=(i+e[i].whr-2-t-t);
add(e[i].whr,1);
}
Ans/=2;
if(Ans<ans) ans=Ans;
if(Ans==33){
for(ll i=1;i<=n;i++) cout<<1-c[i];
cout<<endl;
}
}
}
else{
E[h].now=a[h];
E[h].whr=h;
c[h]=true;
dfs(h+1,sum);
E[h].now=b[h];
E[h].whr=h;
c[h]=false;
dfs(h+1,sum+1);
}
}
int main(){
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
scanf("%lld",&n);
for(ll i=1;i<=n;i++) scanf("%lld",&a[i]);
for(ll i=1;i<=n;i++) scanf("%lld",&b[i]);
dfs(1,0);
if(ans==0x3f3f3f3f3f3f3f) printf("-1");
else printf("%lld",ans);
// fclose(stdin);
// fclose(stdout);
return 0;
}
/*
in:
16
23 1 23 27 11 11 27 27 1 23 11 27 11 1 1 23
11 1 23 23 27 11 1 11 11 27 1 27 23 27 23 1
out:32
*/