{
TASK:round
LANG:Pascal
}
program round;

const
	MAXN				= 2000;

type
	Integer				= LongInt;

var
	F				: Array [0 .. MAXN, 0 .. MAXN] of Integer;
	N, i, j, k			: Integer;
	a, b				: Array [1 .. MAXN] of Integer;
	c, d				: Integer;

procedure readInput;
begin
	readln(N);
	for i := 1 to N do 
		read(a[i]);
	readln;
	for i := 1 to N do
		read(b[i]);
	readln;
end;

function min(a, b: Integer): Integer;
begin
	if (a < b) then
		min := a
	else
		min := b;
end;

procedure Solve;
begin
	F[0, 0] := 0;
	F[1, 0] := 0;
	F[0, 1] := 0;
	for i := 0 to N do
		for j := 0 to N do begin
                	F[i, j] := 0;
                	if (i > 0) then begin
				c := 0;
				d := 0;
				for k := 1 to (i - 1) do
					if (a[k] > a[i]) then
						c := c + 1
					else
						d := d + 1;
				for k := 1 to j do
					if (b[k] > a[i]) then
						c := c + 1
					else
						d := d + 1;
				F[i, j] := F[i - 1, j] + min(c, d);
                        end;

                        if (j > 0) then begin
				c := 0;
				d := 0;
				if (b[j] >= 1) and (b[j] <= N) then begin
					for k := 1 to i do
						if (a[k] > b[j]) and (a[k] <= N)  then
							c := c + 1
						else
							d := d + 1;

					for k := 1 to (j - 1) do
						if (b[k] > b[j]) and (b[k] <= N) then
							c := c + 1
						else
							d := d + 1;
				end else begin
					for k := 1 to i do
						if (a[k] >= N + 1) and (a[k] < b[j]) then
							c := c + 1
						else
							d := d + 1;
					for k := 1 to j - 1 do
						if (b[k] >= N + 1) and (b[k] < b[j]) then
							c := c + 1
						else
							d := d + 1;
				end;

				if (i = 0) then
					F[i, j] := min(c, d)
				else
					F[i, j] := min(F[i, j], F[i, j - 1] + min(c, d));
        		end;

		end;
	writeln(F[N, N]);
end;

begin
	readInput;
	Solve;
end.