/*
TASK: round
LANG: C
*/
#include <stdio.h>

#define MAX 4096

#define LOW_BIT(x) (((x)^((x)-1))&x)

int m[2][MAX],N;
int dp[2][MAX];
int t[MAX];
int mem[MAX];

void add(int index,int value) {
     if (index==0) return;
     while (index<=N) {
           t[index]+=value;
           index+=LOW_BIT(index);
     }
}

int _query(int index) {
int res = 0;
    while (index>0) {
          res+=t[index];
          index-=LOW_BIT(index);
    }
    return res;
}

int query(int start,int end) {
    if (start>end) return 0;
    return _query(end)-_query(start-1);
}

int min(int a,int b) { return (a<b)?a:b; }

int main () {
int i,j,n,x,q1,q2;
int PREV,CUR;
//    freopen ( "round.in" , "r" , stdin);
    scanf("%d",&n);
    for (i=0;i<2;i++)
        for (j=1;j<=n;j++)
            scanf("%d",&m[i][j]);
    N = 2*n;
    PREV = 0;
    CUR = 1;
    if (n==1) {
       printf("0\n");
       return 0;
    }
    memset(t,0,sizeof(t));
    for (j=1;j<=n;j++) {
        if (m[1][j]<=n) {
           q1 = query(m[1][j]+1,n);
           q2 = query(n+1,N)+query(1,m[1][j]-1);
        } else {
           q1 = query(n+1,m[1][j]-1);
           q2 = query(1,n)+query(m[1][j]+1,N);
        }
        x=min(q1,q2);
        dp[PREV][j] = dp[PREV][j-1]+x;
        // dobawiame 4oweka da wleze
        add(m[1][j],1);
    }
    memset(t,0,sizeof(t));
    for (i=1;i<=n;i++) {
        q1 = query(1,m[0][i]-1);
        q2 = query(m[0][i]+1,N);
        x=min(q1,q2);
        mem[i] = mem[i-1]+x;
        // dobawiame 4oweka da wleze
        add(m[0][i],1);
    }
    
    for (i=1;i<=n;i++) {
        memset(t,0,sizeof(t));
        for (j=1;j<=i;j++) {
            add(m[0][j],1);
        }
        dp[CUR][0] = mem[i];
        for (j=1;j<=n;j++) {
            // ako wleze ot redica 1
            add(m[0][i],-1);
            add(m[1][j],1);
            x = dp[PREV][j];
            q1 = query(1,m[0][i]-1);
            q2 = query(m[0][i]+1,N);
            x+=min(q1,q2);
            dp[CUR][j] = x;
            add(m[1][j],-1);
            add(m[0][i],1);
            // ako wleze ot redica 2
            x = dp[CUR][j-1];
            if (m[1][j]<=n) {
               q1 = query(m[1][j]+1,n);
               q2 = query(n+1,N)+query(1,m[1][j]-1);
            } else {
               q1 = query(n+1,m[1][j]-1);
               q2 = query(1,n)+query(m[1][j]+1,N);
            }
            x+=min(q1,q2);
            if (dp[CUR][j]>x)
               dp[CUR][j] = x;
            // dobawiame 4oweka da wleze
            add(m[1][j],1);
        }
        PREV=!PREV;
        CUR=!CUR;
    }
    printf("%d\n",dp[PREV][n]);
    return 0;
}
