/*
    给出如图的电路布线,求最大的一块,其中里面的线两两相交
    n<=10^6
    
    看解题报告的:
    
http://itbhu.ac.in/codefest/problem.php?pid=102
    它说这是一个Permutation Graph
    先将上面那排的数字映射为1,2,,n,然后下面那排再映射一下
    其中的最大图就是最长下降子序列了     -------------------------------OMG
    O(nlogn)
*/

#include
<iostream>
#include
<cstring>
#include
<map>
#include
<algorithm>
#include
<stack>
#include
<queue>
#include
<cmath>
#include
<string>
#include
<cstdlib>
#include
<vector>
#include
<cstdio>
#include
<set>
#include
<list>
#include
<numeric>
#include
<cassert>
#include
<ctime>
#include
<bitset>

using namespace std;

const int MAXN = 1000010;

int a[MAXN];

bool cmp(const int &a , const int &b) {
    
return a > b;
}


int main()
{
#ifndef ONLINE_JUDGE
    freopen(
"in","r",stdin);
#endif
    
    ios::sync_with_stdio(
false);//取消跟stdin的同步  然后cin,cout就不要跟scanf,printf混用了
    for (int n ; cin>>n ; ) {
        
for (int i = 1, x ; i <= n ; i++{
            cin
>>x;
            a[x] 
= i;//
        }

        vector
<int> rec;
        
for (int i = 1, x; i <= n ; i ++{
            cin
>>x;
            x 
= a[x];//
            int pos = upper_bound(rec.begin(), rec.end(), x, cmp) - rec.begin();
            
if(pos == rec.size()){
                rec.push_back(
0);
            }

            rec[pos] 
= x;
        }

        cout
<<rec.size()<<endl;
    }

    
return 0;
}