#include <bits/stdc++.h>
using namespace std;
int f[1002000], a[1002000], b[1002000], c[1002000], n, i, x;
void modify(int j, int k) {
  while (j <= n) {
    f[j] = max(f[j], k);
    j = (j | (j - 1)) + 1;
  }
}
int findmax(int j) {
  int res = 0;
  while (j) {
    res = max(res, f[j]);
    j = (j & (j - 1));
  }
  return res;
}
int main() {
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%d", &x);
    a[x] = i;
  }
  for (i = 1; i <= n; i++) {
    scanf("%d", &x);
    b[x] = i;
  }
  for (i = 1; i <= n; i++) c[a[i]] = n - b[i] + 1;
  for (i = 1; i <= n; i++) {
    modify(c[i], findmax(c[i] - 1) + 1);
  }
  printf("%d\n", findmax(n));
  return 0;
}
