あなたは無事進学振り分けを終え、駒場近辺から本郷近辺へ引っ越す準備の最中であった。 家の中を整理していたところ去年購入した宝くじが大量に見つかった。 交換期限を確認したところ明日までに換金しなければならないのだが、引っ越しの準備がまだ全く終わっていないため少額の当選金のために宝くじ売り場まで行くのは面倒である。 そこであなたはいくら当選金が得られるかを調べることにした。
宝くじは8桁の数字からなる。当選番号は同じく8桁で数字と'*'から構成され、持っている宝くじと数字部分が一致した場合、当選番号に応じた当選金が支払われる。
例えば所持している宝くじの番号が "12345678" の場合、当選番号が "*******8" や "****5678" の場合は当選となるが、当選番号が "****4678" のときは当選とはならない。当選番号は複数あり得て、それぞれ独立に当選金が支払われる。ただし、当選番号は1枚の宝くじが2つ以上の当選番号に当たらないように選ばれる。たとえば当選番号が "*******8", "****5678" の2つであった場合、 "12345678" は両方に当選してしまうため、このような当選番号の選ばれ方がされることはない。
あなたの仕事は、入力として与えられる所持している宝くじの番号と宝くじの当選番号に対して、いくらの当選金が得られるかを出力するプログラムを書くことである。
入力は以下のような形式で与えられる。
n m N1 M1 ... Nn Mn B1 ... Bm
1行目では当選番号の数 n (1 ≤ n ≤ 100)と所持している宝くじの枚数 m (1 ≤ m ≤ 1000)がそれぞれ整数で与えられる。
続く n 行では、各行に当選番号 Ni と当選金 Mi (1 ≤ Mi ≤ 1000000)が与えられる。当選金は整数である。当選番号の形式は問題文中で述べたとおりである。
続く m 行では所持している宝くじの番号が与えられる。
当選金の合計額を出力せよ。
3 3 *******1 100 ******22 1000 11111112 1000000 01203291 02382022 11111111
1200
10 10 ****3228 149416 ****3992 198635 ****4286 77783 ****4843 225244 ***49835 231046 ***59393 379996 *5763748 437345 *6726222 58054 *8117882 16375 *9244339 537727 77885716 96726222 26971031 66652868 89599648 37772338 64679621 65479161 92959393 57855682
438050