#include <bits/stdc++.h>
#include <unistd.h>
 
using namespace std;
 
typedef long long ll;
typedef pair<ll,ll> P;
 
long long int INF = 3e18;
const ll fact_table = 800008;
double Pi = 3.1415926535897932384626;
 
//vector<ll> G[550010];
//vector<P> tree[500010];
priority_queue <ll> pql;
priority_queue <P> pqp;
//big priority queue
priority_queue <ll,vector<ll>,greater<ll> > pqls;
// priority_queue <P,vector<P>,greater<P> > pqps;
//small priority queue
//top pop
 
ll dx[8]={1,0,-1,0,1,1,-1,-1};
ll dy[8]={0,1,0,-1,1,-1,-1,1};
char dir[] = "DRUL";
//ll bit[500005];
//↓,→,↑,←
 
 
#define p(x) cout<<x<<"\n";
#define el cout<<endl;
#define pe(x) cout<<(x)<<" ";
#define ps(x) cout<<fixed<<setprecision(25)<<x<<endl;
#define pu(x) cout<<(x);
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define CLEAR(a) a = decltype(a)(); 
 
 
//ll mod = 998244353;
ll mod = 1000000007;
 
ll rui(ll number1,ll number2){
 
    if(number2 == 0){
        return 1;
    }else{
        ll number3 = rui(number1,number2 / 2);
        number3 *= number3;
        number3 %= mod;
        if(number2%2==1){
            number3 *= number1;
            number3 %= mod;
        }
        return number3;
    }
}
ll gcd(ll number1,ll number2){
 
    if(number1 > number2){
        swap(number1,number2);
    }
    if(number1 == 0 || number1 == number2){
        return number2;
    }else{
        return gcd(number2 % number1,number1);
    }
}
void YES(bool condition){
 
    if(condition){
        p("YES");
    }else{
        p("NO");
    }
    return;
}
void Yes(bool condition){
 
    if(condition){
        p("Yes");
    }else{
        p("No");
    }
    return;
}
 
/*
ll fact[fact_table + 5],rfact[fact_table + 5];
 
void c3_init(){
    fact[0] = rfact[0] = 1;
    for(ll i=1; i<=fact_table; i++){
        fact[i] = (fact[i-1]*i) % mod;
    }
    rfact[fact_table] = rui(fact[fact_table],mod - 2);
    for(ll i=fact_table; i>=1; i--){
       rfact[i-1] = rfact[i] * i;
       rfact[i-1] %= mod;
    }
    return;}
ll c3(ll n,ll r){
    return (((fact[n] * rfact[r]) % mod ) * rfact[n-r]) % mod;}
*/
 
ll n,m,num,sum,a,b,c,d,e,g,h,i,j,q,r,l;
ll k;
ll ans;
ll x[500005], y[200005], z[200005];
ll w[5005];
bool used[3005];
P table[500005];
ll count[5005];
ll count_odd1[5005], count_odd2[5005], count_even1[5005], count_even2[505];

vector<ll> s, t;

ll sort_count(){
    ll cnt = 0;
    
    for(ll i=0;i<s.size();i++){
        if(s[i] == t[i])continue;
        for(ll j=i+1;j<s.size();j++){
            if(s[j] != t[i])continue;
            for(ll k=j;k>i;k--){
                swap(s[k], s[k-1]);
                cnt ++;
            }
            break;
        }
    }
    
    return cnt;
}
int main(){
    /*
    cin.tie(0);
    ios::sync_with_stdio(false);
    */
    cin >> n;
    for(ll i=0;i<n;i++){
        cin >> x[i];
    }
    for(ll i=0;i<n;i++){
        cin >> y[i];
    }
    ll bit = (1ll << n);
    ll ans = INF;
    for(ll i=0;i<bit;i++){
        ll popcount = 0;
        for(ll j=0;j<n;j++){
            if((1ll << j) & i){
                z[j] = y[j];
                w[j] = y[j];
                popcount ++;
                used[j] = true;
            }else{
                z[j] = x[j];
                w[j] = x[j];
                used[j] = false;
            }
        }
        if(popcount % 2 == 1)continue;
        sort(w, w + n);
        for(ll j=0;j<55;j++){
            count_even1[j] = 0;
            count_odd1[j] = 0;
            count_even2[j] = 0;
            count_odd2[j] = 0;
        }
        for(ll j=0;j<n;j++){
            if(j % 2 == 0){
                count_even1[w[j]]++;
            }else{
                count_odd1[w[j]]++;
            }
        }
        for(ll j=0;j<=55;j++){
            count_even2[j] = count_even1[j];
            count_odd2[j] = count_odd1[j];
        }
        bool dame = false;
        for(ll j=0;j<n;j++){
            ll flag = j % 2;
            if(used[j])flag = 1 - flag;
            if(flag == 0){
                count_even1[z[j]]--;
                if(count_even1[z[j]] < 0)dame = true;
            }else{
                count_odd1[z[j]]--;
                if(count_odd1[z[j]] < 0)dame = true;
            }
        }
        if(dame)continue;
        ll count = 0;
        for(ll j=0;j<n;j++){
            for(ll k=j+1;k<n;k++){
                if(z[j] > z[k])count++;
            }
        }
        for(ll j=1;j<=50;j++){
            if(count_odd2[j] > 0 && count_even2[j] > 0){
                s.clear();t.clear();
                for(ll k=0;k<n;k++){
                    if(z[k] == j){
                        s.pb((k + used[k]) % 2);
                    }
                    if(w[k] == j){
                        t.pb(k % 2);
                    }
                }
                count += sort_count();
            }
        }
        ans = min(ans, count);
        
    }
    if(ans == INF){
        p(-1);
        return 0;
    }
    p(ans);
    return 0;
}
 
 











Measured memory_bytes: 6528