Олимпиадный тренинг

Задача . G. Буквы и знаки вопроса


Вам даны строка \(S\) и массив строк \([t_1, t_2, \dots, t_k]\). Каждая строка \(t_i\) состоит из строчных латинских букв от a до n; \(S\) состоит из строчных латинских букв от a до n и не более \(14\) знаков вопроса.

У каждой строки \(t_i\) есть цена \(c_i\) — целое число. Стоимость некоторой строки \(T\) считается как \(\sum\limits_{i = 1}^{k} F(T, t_i) \cdot c_i\), где \(F(T, t_i)\) — количество вхождений \(t_i\) в \(T\) в качестве подстроки. К примеру, \(F(\text{aaabaaa}, \text{aa}) = 4\).

Вы должны заменить все знаки вопроса в \(S\) на попарно различные строчные латинские буквы от a до n так, чтобы стоимость \(S\) была максимально возможной.

Входные данные

В первой строке задано одно целое число \(k\) (\(1 \le k \le 1000\)) — количество строк в массиве \([t_1, t_2, \dots, t_k]\).

Затем следуют \(k\) строк, каждая из которых содержит строку \(t_i\) (состоящую из строчных латинских букв от a до n) и целое число \(c_i\) (\(1 \le |t_i| \le 1000\), \(-10^6 \le c_i \le 10^6\)). Сумма длин всех \(t_i\) не превосходит \(1000\).

В последней строке задана одна строка \(S\) (\(1 \le |S| \le 4 \cdot 10^5\)) из латинских букв от a до n и знаков вопроса. Количество знаков вопроса в \(S\) не превосходит \(14\).

Выходные данные

Выведите одно целое число — максимальную стоимость \(S\) после замены всех знаков вопроса на попарно различные строчные латинские буквы от a до n.


Примеры
Входные данныеВыходные данные
1 4
abc -10
a 1
b 1
c 3
?b?
5
2 2
a 1
a 1
?
2
3 3
a 1
b 3
ab 4
ab
8
4 1
a -1
?????????????
0
5 1
a -1
??????????????
-1

time 4000 ms
memory 1024 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя