#include<iostream>
using namespace std;
int n,a[3005],b[3005],f[3005][3005],i,j,maxv,ans=0;
int main()
{
cin>>n;
for(i=1;i<=n;i++)cin>>a[i];
for(i=1;i<=n;i++)cin>>b[i];
for(i=1;i<=n;i++){
maxv=1;
for(j=1;j<=n;j++){
f[i][j]=f[i-1][j];
if(a[i]==b[j])f[i][j]=max(f[i][j],maxv);
if(b[j]<a[i])maxv=max(maxv,f[i-1][j]+1);
}
}
for(i=1;i<=n;i++)ans=max(ans,f[n][i]);
cout<<ans<<endl;
return 0;
}