#include <iostream>
#include <cstdio>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>

using namespace std;


int main(){
	ofstream fout("kamen.out");
	ifstream fin("kamen.in");
	int n, m;
	fin >> n >> m;
	vector <int> ic[26];
	int cnt[26];
	for (int i = 0; i < 26; i++){
		ic[i].clear();
		cnt[i] = 0;
	}
	int ret = 0, t;
	char cc;
	for (int i = 0; i < n; i++){
		fin >> cc >> t;
		ic[cc - 'A'].push_back(t);
	}
	for (int i = 0; i < 26; i++)
		sort(ic[i].begin(), ic[i].end());
	for (int i = 0; i < m; i++){
		fin >> cc;
		cnt[cc - 'A']++;
	}
	for (int i = 0; i < 26 && ret != -1; i++)
		for (int j = 0; j < cnt[i]; j++)
			if (ic[i].size() == j){
				ret = -1;
				break;
			}
			else
				ret += ic[i][j];
	fout << ret << endl;
	fout.close();
	fin.close();
	return 0;
}
