var
dy,tr:array[0..300000] of int64;
no,so:array[0..120000] of int64;
n,m,l,i,o:longint;
functionmax(a,b:int64):int64;
beginif a>b thenexit(a)
elseexit(b);
end;
functionlowbit(o:longint):longint;
beginexit(o and (-o));
end;
functionxz(o:longint):longint;
begin
xz:=0;
while o<=n dobegin
xz:=max(xz,tr[o]);
o:=o+lowbit(o);
end;
end;
proceduregx(o,k:longint);beginwhile o>0dobegin
tr[o]:=max(tr[o],k);
o:=o-lowbit(o);
end;
end;
begin
readln(n);
for i:=1to n dobeginread(so[i]);
so[i]:=so[i]+n;
end;
readln;
for i:=1to n dobeginread(no[i]);
no[i]:=no[i]+n;
dy[no[i]]:=i;
end;
o:=0;
m:=0;
for i:=1to n dobegin
o:=xz(dy[so[i]])+1;
m:=max(m,o);
gx(dy[so[i]]-1,o);
end;
writeln(m);
end.