#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vi = vector<int>;
using pii = pair<int, int>;
const int MAXN = 2e5 + 10;
template <typename T>
istream &operator>>(istream &is, vector<T> &v) {
  for (auto i = begin(v); i != end(v); i++) is >> *i;
  return is;
}
template <typename T>
ostream &operator<<(ostream &os, const vector<T> &v) {
  for (auto i = begin(v); i != end(v); i++)
    os << *i << (i == end(v) - 1 ? "\n" : " ");
  return os;
}
void read(int &x) {
  x = 0;
  char ch = getchar();
  int pd = 1;
  while (ch < '0' || ch > '9') {
    if (ch == '-') pd = -pd;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  x *= pd;
}
void write(const int &x) {
  char ggg[10001];
  int s = 0;
  int tmp = x;
  if (tmp == 0) {
    putchar('0');
    return;
  }
  if (tmp < 0) {
    tmp = -tmp;
    putchar('-');
  }
  while (tmp > 0) {
    ggg[s++] = tmp % 10 + '0';
    tmp /= 10;
  }
  while (s > 0) {
    putchar(ggg[--s]);
  }
}
int a[MAXN], b[MAXN], id[MAXN];
int mx[MAXN];
signed main() {
  int n, m, k;
  cin >> n >> m >> k;
  for (register int i = 1, ilen = (int)(n); i <= ilen; ++i) cin >> a[i];
  for (register int i = 1, ilen = (int)(n); i <= ilen; ++i) {
    int x;
    cin >> x;
    id[i] = x;
    mx[x] = max(mx[x], a[i]);
  }
  int ans = 0;
  for (register int i = 1, ilen = (int)(k); i <= ilen; ++i) {
    cin >> b[i];
    if (a[b[i]] != mx[id[b[i]]]) ++ans;
  }
  cout << ans << '\n';
  return 0;
}
