#include<bits/stdc++.h>
#define maxn 100000
#define int long long
using namespace std;
int n,a[maxn+5],b[maxn+5],mp[maxn+5],dp[maxn+5],fin[maxn+5];
int len;
int find(int x)
{
int l=1,r=len,mid;
while(l<r)
{
mid=(l+r)>>1;
if(dp[mid]>x)
r=mid-1;
else
l=mid+1;
}
return l;
}
signed main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
cin>>b[i];
for(int i=1;i<=n;i++)
mp[a[i]]=i;
for(int i=1;i<=n;i++)
fin[i]=mp[b[i]];
dp[1]=fin[1];
len=1;
for(int i=2;i<=n;i++)
{
if(fin[i]>dp[len])
dp[++len]=fin[i];
else
dp[find(fin[i])]=fin[i];
}
cout<<len;
return 0;
}