#include <cstdio>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

class Point{
public:
  int n[8],g;
  bool operator < (const Point &p) const{ return g > p.g;}
};

int main(){
  int i,j,n,m,b[8],ans;
  Point p[100];
  string str;
  while(1){
    cin >> n >> m;
    if(n == 0 && !m) break;

    for(i=0;i<n;i++){
      cin >> str;
      for(j=0;j<str.size();j++){
	if(str[j] == '*') p[i].n[j] = -1;
	else p[i].n[j] = str[j] - '0';
      }
      cin >> p[i].g;
    }

    sort(p,p+n);
    ans = 0;

    for(i=0;i<m;i++){
      cin >> str;
      for(j=0;j<8;j++) b[j] = str[j] - '0';

      for(int k=0;k<n;k++){
	for(j=0;j<8;j++){
	  if(p[k].n[j] != -1 && p[k].n[j] != b[j]) break;
	}
	if(j == 8){
	  ans += p[k].g;
	  break;
	}
      }
    }

    cout << ans << endl;

  }
  return 0;
}