#include<cstdio>
using namespace std;

class tousen{
  public:
    char num[9];
    long money;
};

bool se(char *x,tousen y){
  for(int i=8;i>=0;i--){
    if (y.num[i]=='*')return true;
    else if(x[i]!=y.num[i])return false;
  }
  return true;
}

int main(){
  int n,m;
  long long getmon;
  tousen x[100];
  char have[9];
  while(1){
    scanf("%d %d",&n,&m);
    if(!n||!m)break;
    getmon = 0;
    for(int i=0;i<n;i++){
      scanf("%s %ld",x[i].num,&x[i].money);
    }
    for(int i=0;i<m;i++){
      scanf("%s",have);
      for(int j=0;j<n;j++){
        if(se(have,x[j]))getmon += x[j].money;
      }
    }
    printf("%lld\n",getmon);
  }
  return 0;
}