#include <bits/stdc++.h>
using namespace std;
int att[110], def[110], va[110];
int a = 0, d = 0;
vector<int> p;
int main() {
  int n, m, v;
  scanf("%d%d", &m, &n);
  for (int i = 0; i < m; i++) {
    char op[15];
    scanf("%s", op);
    scanf("%d", &v);
    if (op[0] == 'D')
      def[d++] = v;
    else
      att[a++] = v;
  }
  for (int i = 0; i < n; i++) scanf("%d", &va[i]);
  sort(att, att + a);
  sort(def, def + d);
  sort(va, va + n);
  int res = 0, sa = 0, sd = 0;
  for (int i = n - 1; i >= 0; i--) {
    if (sa == a) break;
    if (va[i] >= att[sa]) {
      res += va[i] - att[sa];
      sa++;
    } else
      break;
  }
  int ans = 0;
  for (int i = 0; i < n; i++) {
    if (sd == d) break;
    if (va[i] > def[sd]) {
      va[i] = 0;
      sd++;
    }
  }
  if (sd < d) {
    printf("%d\n", res);
    return 0;
  }
  sort(va, va + n);
  sa = 0;
  for (int i = 0; i < n; i++) {
    if (sa == a)
      p.push_back(va[i]);
    else if (va[i] >= att[sa]) {
      ans += va[i] - att[sa];
      sa++;
    } else
      p.push_back(va[i]);
  }
  if (sa == a) {
    for (int i = 0; i < p.size(); i++) ans += p[i];
  }
  printf("%d\n", max(res, ans));
  return 0;
}
