#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> a, b, t;
void update(int i, int v) {
  t[i + n] = max(t[i + n], v);
  for (i += n; i > 1; i >>= 1) t[i >> 1] = max(t[i], t[i ^ 1]);
}
int query(int l, int r) {
  int res = 0;
  for (l += n, r += n; l < r; l >>= 1, r >>= 1) {
    if (l & 1) res = max(t[l++], res);
    if (r & 1) res = max(t[--r], res);
  }
  return res;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  a.resize(n);
  b.resize(n);
  t.resize(n << 1);
  for (int i = 0; i < n; i++) cin >> a[i], a[i]--;
  for (int i = 0, x; i < n; i++) cin >> x, b[x - 1] = i;
  for (int i = 0; i < n; i++)
    update(b[a[i]], (b[a[i]] == n - 1 ? 0 : query(b[a[i]] + 1, n)) + 1);
  cout << query(0, n);
}
