#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
*/