#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
int c[510 * 15];
int f[510];
int h[15];
int ccnt[100100];
int fcnt[100100];
bool fmark[100100];
int dp[510][510 * 15];
int main(void) {
  int n, k;
  cin >> n >> k;
  int i, j;
  for (i = 0; i < n * k; i++) {
    cin >> c[i];
    ccnt[c[i]]++;
  }
  for (i = 0; i < n; i++) {
    cin >> f[i];
    fcnt[f[i]]++;
  }
  for (i = 1; i <= k; i++) cin >> h[i];
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= n * k; j++) {
      for (int x = 0; x <= k; x++) {
        dp[i][j] = max(dp[i][j], (j >= x) ? (dp[i - 1][j - x] + h[x]) : 0);
      }
    }
  }
  long long ans = 0;
  for (i = 0; i < n; i++) {
    if (fmark[f[i]]) continue;
    fmark[f[i]] = 1;
    int x = fcnt[f[i]];
    int y = ccnt[f[i]];
    ans += dp[x][y];
  }
  cout << ans << endl;
  return 0;
}
