#include <bits/stdc++.h>
using namespace std;
struct ilter {
  int job;
  long long ti;
  bool operator<(const ilter &a) const { return a.ti > ti; }
} T[100001];
int s, c;
long long TIME;
int main() {
  map<int, int> M2;
  int n, k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    cin >> T[i].job;
    M2[T[i].job]++;
  }
  for (int i = 0; i < n; i++) {
    cin >> T[i].ti;
    ;
  }
  s = k - M2.size();
  if (s == 0)
    return cout << 0, 0;
  else {
    sort(T, T + n);
    for (int i = 0; i < n; i++) {
      if (M2[T[i].job] > 1) {
        TIME += T[i].ti;
        M2[T[i].job]--;
        c++;
      }
      if (c == s) break;
    }
    cout << TIME;
  }
  return 0;
}
