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

#define N	2048

int t[4*N];

int c[N][N];
int g[2][N];
int n;

void add(int a) {
	int c;

	c = 2*N+a;
	while (c > 0) {
		t[c]++;
		c /= 2;
	}
}

void del(int a) {
	int c;

	c = 2*N+a;
	while (c > 0) {
		t[c]--;
		c /= 2;
	}
}

int q1(int a) {
	int c;
	int r;

	r = 0;
	c = 2*N+a;

	while (c > 0) {
		if (c%2 == 1)
			c /= 2;
                else {
			r += t[c];
			c--;
		}
	}

	return r;
}

void solve() {
	int i, j;
	int t1, t2;
	int c1, c2;

	for (i = 1; i <= n; i++) {
		t1 = q1(g[0][i]);
		t2 = t[1] - t1;
		if (t1 < t2)
			c[i][0] = c[i-1][0] + t1;
                else
			c[i][0] = c[i-1][0] + t2;
		add(g[0][i]);
	}
	for (i = 1; i <= n; i++)
		del(g[0][i]);
		
	for (j = 1; j <= n; j++) {
		if (g[1][j] < n)
			t1 = q1(n) - q1(g[1][j]);
		else
			t1 = q1(g[1][j]) - q1(n);
		t2 = t[1] - t1;
		if (t1 < t2)
			c[0][j] = c[0][j-1] + t1;
                else
			c[0][j] = c[0][j-1] + t2;
                add(g[1][j]);
	}
	for (j = 1; j <= n; j++)
		del(g[1][j]);

        for (i = 1; i <= n; i++) {
		for (j = 1; j <= n; j++) {
			add(g[0][i]);
			if (g[1][j] < n)
				t1 = q1(n) - q1(g[1][j]);
			else
				t1 = q1(g[1][j]) - q1(n);
                        t2 = t[1] - t1;
			if (t1 < t2)
				c2 = c[i][j-1] + t1;
                        else
				c2 = c[i][j-1] + t2;
                        del(g[0][i]);

			add(g[1][j]);
			t1 = q1(g[0][i]);
			t2 = t[1] - t1;
			if (t1 < t2)
				c1 = c[i-1][j] + t1;
                        else
				c1 = c[i-1][j] + t2;

			if (c1 < c2)
				c[i][j] = c1;
                        else
				c[i][j] = c2;

		}
		add(g[0][i]);
		for (j = 1; j <= n; j++)
			del(g[1][j]);
        }

	printf("%d\n", c[n][n]);
}

int main() {
	int i;

	scanf("%d", &n);
	for (i = 1; i <= n; i++)
		scanf("%d", &g[0][i]);
        for (i = 1; i <= n; i++)
		scanf("%d", &g[1][i]);

        solve();

	return 0;
}
