typedef long long ll; typedef long double ld; #include using namespace std; struct fenwick_tree { typedef int T; T n; vector bit; // 各要素の初期値は 0 fenwick_tree(T num) : bit(num+1, 0) { n = num; } // a_i += w void add(T i, T w) { for (T x = i; x <= n; x += x & -x) { bit[x] += w; } } // [1, i] の和を計算. T sum(T i) { T ret = 0; for (T x = i; x > 0; x -= x & -x) { ret += bit[x]; } return ret; } // [left+1, right] の和を計算. T sum(T left, T right) { return sum(right) - sum(left); } }; int main() { ll n; std::cin >> n; vector a(n),b(n); for (int i = 0; i < n; i++) { std::cin >> a[i]; } map m; for (int i = 0; i < n; i++) { std::cin >> b[i]; m[b[i]] = i+1; } for (int i = 0; i < n; i++) { a[i] = m[a[i]]; } fenwick_tree f_tree(n); ll ans = 0; for (int j = 0; j < n; j++) { ans += j - f_tree.sum(a[j]); f_tree.add(a[j], 1); } std::cout << ans << std::endl; }