#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000005;
const int lg = 20;
int pos[maxn];
bool vis[maxn];
int bit[maxn];
int loga[maxn];
int st[maxn][20];
void update(int idx, int val) {
  idx += 2;
  while (idx < maxn) {
    bit[idx] += val;
    idx += idx & (-idx);
  }
}
int query(int idx) {
  idx += 2;
  int sum = 0;
  while (idx) {
    sum += bit[idx];
    idx -= idx & (-idx);
  }
  return sum;
}
int n, k;
set<int> s;
int get_left(int val) {
  int p = pos[val];
  auto x = s.upper_bound(p);
  return *(--x);
}
int get_right(int val) {
  int p = pos[val];
  auto x = s.upper_bound(p);
  return *x - 1;
}
int main() {
  scanf("%d %d", &n, &k);
  s.insert(0);
  s.insert(n + 1);
  for (int i = 1; i <= n; i++) loga[i] = 31 - __builtin_clz(i);
  for (int i = 1; i <= n; i++) {
    update(i, 1);
    int a;
    scanf("%d", &a);
    pos[a] = i;
  }
  for (int i = 1; i <= k; i++) {
    int a;
    scanf("%d", &a);
    vis[a] = 1;
  }
  long long ans = 0;
  for (int i = 1; i <= n; i++) {
    if (vis[i]) {
      s.insert(pos[i]);
      continue;
    }
    int l = get_left(i);
    int r = get_right(i);
    ans += query(r) - query(l);
    update(pos[i], -1);
  }
  printf("%lld\n", ans);
  return 0;
}
