#include <bits/stdc++.h>
using namespace std;
int n, m;
long long int dp[503][5030];
long long int cnt[100100];
long long int fav[100100];
int t[550];
int used[100100];
long long int h[15];
int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  cin >> n >> m;
  for (int i = 0; i < n * m; i++) {
    int x;
    cin >> x;
    cnt[x]++;
  }
  for (int i = 0; i < n; i++) {
    cin >> t[i];
    fav[t[i]]++;
  }
  for (int i = 0; i < m; i++) {
    cin >> h[i];
  }
  long long int ans = 0;
  for (int i = 0; i < n; i++) {
    if (used[t[i]]) continue;
    used[t[i]] = 1;
    cnt[t[i]] = min(cnt[t[i]], fav[t[i]] * (long long int)m);
    for (int j = 0; j <= fav[t[i]]; j++) {
      for (int k = 0; k <= cnt[t[i]]; k++) {
        dp[j][k] = -1e15;
      }
    }
    dp[0][0] = 0;
    for (int j = 0; j < fav[t[i]]; j++) {
      for (int k = 0; k <= cnt[t[i]]; k++) {
        if (dp[j][k] < 0) continue;
        for (int l = 0; l <= min((int)m, (int)cnt[t[i]] - k); l++) {
          dp[j + 1][k + l] =
              max(dp[j + 1][k + l],
                  dp[j][k] + (l == 0 ? 0 : (long long int)h[l - 1]));
        }
      }
    }
    long long int ma = 0;
    for (int j = 0; j <= cnt[t[i]]; j++) {
      ma = max(ma, dp[fav[t[i]]][j]);
    }
    ans += ma;
  }
  cout << ans << endl;
}
