{
TASK:round
LANG:Pascal
}
var a:array[1..4000] of byte;
    x,y:array[1..2000] of integer;
    m,n,i,j:longint;
    t:text;
function min(a,b:longint):longint;
begin
min:=(a+b-abs(a-b)) div 2;
end;
procedure check(i,j,lev,d:longint);
var k,l,p:longint;
begin
if d>=m then exit;
if (i>n) and (j>n) then
   begin
   m:=d;
   exit;
   end;
if i<=n then
   begin
   if x[i]<2*n-x[i] then
      begin
      k:=0;
      for p:=1 to x[i]-1 do k:=k+a[p];
      l:=lev-k;
      end else
      begin
      l:=0;
      for p:=2*n downto x[i]+1 do l:=l+a[p];
      k:=lev-l;
      end;
   a[x[i]]:=1;
   check(i+1,j,lev+1,d+min(k,l));
   a[x[i]]:=0;
   end;
if j<=n then
   begin
   if y[j]>=n+1 then
      begin
      k:=0;
      for p:=n+1 to y[j]-1 do k:=k+a[p];
      l:=lev-k;
      end else
      begin
      l:=0;
      for p:=n downto y[j]+1 do l:=l+a[p];
      k:=lev-l;
      end;
   a[y[j]]:=1;
   check(i,j+1,lev+1,d+min(k,l));
   a[y[j]]:=0;
   end;
end;
begin
assign(t,'');
reset(t);
readln(t,n);
for n:=1 to n do read(t,x[n]);
for n:=1 to n do read(t,y[n]);
close(t);
m:=2000000000;
a[x[1]]:=1;
check(2,1,1,0);
i:=m;
a[x[1]]:=0;
a[y[1]]:=1;
check(1,2,1,0);
j:=m;
a[y[1]]:=0;
writeln(min(i,j));
end.