#include <bits/stdc++.h>
using namespace std;
int n, d[1001000], p[1001000], x, t[2 * (1 << 20)], ans = 0;
void add(int x, int v) {
  t[x] += v;
  while (x > 1) {
    x >>= 1;
    t[x] = max(t[(x << 1)], t[(x << 1) + 1]);
  }
}
int get(int l, int r) {
  int tp = 0;
  while (l < r) {
    if (l & 1) {
      tp = max(tp, t[l]);
      l++;
    }
    if (!(r & 1)) {
      tp = max(tp, t[r]);
      r--;
    }
    if (l > r) break;
    l >>= 1;
    r >>= 1;
  }
  return max(tp, t[l]);
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &x);
    x--;
    d[x] = i;
  }
  for (int i = 0; i < n; i++) {
    scanf("%d", &x);
    x--;
    p[d[x]] = i;
  }
  fill(t, t + 2 * (1 << 20), 0);
  for (int i = 0; i < n; i++) {
    add(p[i] + (1 << 20), get(p[i] + (1 << 20), n + (1 << 20)) + 1);
    ans = max(ans, t[p[i] + (1 << 20)]);
  }
  printf("%d\n", ans);
  return 0;
}
