#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int n,m;
char tosenB[100][10];
int tosenK[100];
char myB[1000][10];

bool mystrcmp(char s1[],char s2[]){
  int len1=strlen(s1);
  int len2=strlen(s2);
  if(len1 != len2){
    return false;
  }else{
    for(int i=0;i<len1;i++){
      if(s1[i]!=s2[i] && s1[i]!='*' && s2[i]!='*'){
	return false;
      }
    }
  }
  return true;
}
int main(){
  cin>>n>>m;
  int ans;
  while(n!=0){
    ans=0;
    for(int i=0;i<n;i++)
      cin>>tosenB[i]>>tosenK[i];
    for(int i=0;i<m;i++)
      cin>>myB[i];
    for(int i=0;i<m;i++){
      for(int j=0;j<n;j++){
	if(mystrcmp(myB[i],tosenB[j])){
	  ans+=tosenK[j];
	  break;
	}
      }
    }
    cout<<ans<<endl;
    cin>>n>>m;

  }

  return 0;
}