#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int max_n=20;
const int inf=0x3f3f3f3f;
int n,a[max_n],b[max_n];
int dp[1<<18][max_n];
int get(int x,int y){
    return (x^y)&1?b[x]:a[x];
}
int main(){
    scanf("%d",&n);
    for(int i=0;i<n;i++)scanf("%d",a+i);
    for(int i=0;i<n;i++)scanf("%d",b+i);
    for(int s=1;s<(1<<n);s++){
        if(s&(s-1)){
            int c=__builtin_popcount(s);
            for(int i=0;i<n;i++){
                if(s>>i&1){
                    dp[s][i]=inf;
                    int t=s^(1<<i);
                    int cost=0;
                    for(int j=i+1;j<n;j++)if(s>>j&1)cost++;
                    for(int j=0;j<n;j++){
                        if((t>>j&1)&&get(j,c-2)<=get(i,c-1)){
                            dp[s][i]=min(dp[s][i],dp[t][j]+cost);
                        }
                    }
                }
            }
        }
    }
    int ans=inf;
    for(int i=0;i<n;i++)ans=min(ans,dp[(1<<n)-1][i]);
    if(ans!=inf)printf("%d\n",ans);
    else printf("-1\n");
    return 0;
}