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

Задача . D. A и B и интересные подстроки


A и B готовятся к олимпиадам про программированию.

После нескольких лет занятия спортивным программированием и решения множества задач, требующих подсчета различных абстрактных объектов, у A и B тоже сложились весьма необычные вкусы.

A увлечен строчными буквами латинского алфавита. Он присвоил каждой из них число, обозначающее насколько сильно она ему нравится (буквам, которые он недолюбливает, он присвоил отрицательное число).

B увлечен подстроками. Особенно его интересуют те из них, которые начинаются и заканчиваются на одну и ту же букву (разумеется, в таком случае их длина должна быть больше единицы).

У A и B также есть строка s. Теперь они пытаются выяснить, сколько подстрок t в s интересны для B (то есть t начинается и заканчивается на одну и ту же букву и имеет длину больше единицы) и при этом сумма значений всех букв (присвоенных A) в t, кроме первой и последней, равна нулю.

Разумеется, A и B быстро нашли количество интересующих их подстрок t. А сможете ли это сделать вы?

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

Первая строка содержит 26 целых чисел xa, xb, ..., xz ( - 105 ≤ xi ≤ 105) — значение, присвоенное А буквам a, b, c, ..., z соответственно.

Вторая строка содержит строку s длиной от 1 до 105 символов и состоящую из строчных букв латинского алфавита, для которой требуется посчитать ответ.

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

В единственной строке выходных данных выведите ответ на задачу.

Примечание

В первом тестовом примере нам подходят подстроки abca и bcab.

Во втором тестовом примере нам подходит подстрока aa, которая встречается 2 раза.


Примеры
Входные данныеВыходные данные
1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 1 8 1 1 1 1 1 1
xabcab
2
2 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 1 8 1 1 1 1 1 1
aaa
2

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

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