Автор: | A. Baranov | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Вася узнал, что его дедушка с очень давних пор любит разгадывать кроссворды.
На его юбилей Вася решил подарить ему игру, представляющую собой обобщенный вариант кроссворда — "графворд".
В качестве игрового поля в ней выступает некоторый неориентированный граф,
вершинам которого приписаны строчные буквы латинского алфавита.
В процессе разгадывания "графворда" игроку требуется составлять слова, перемещаясь по ребрам такого графа.
Согласно правилам игры каждое ребро можно посещать более одного раза.
Однако запрещается, чтобы текущее ребро совпадало с предыдущим.
При разработке уровней для своей игры Вася столкнулся с задачей определения числа всех возможных путей,
формирующих некоторое заданное слово в данном графе.
Так как полученное число может оказаться слишком большим,
в качестве ответа следует вывести остаток от его деления на 109.
В начале входных данных находится число вершин N,
за которым следует набор символов, приписанных каждой из вершин.
Далее указано число ребер M, за которым следуют сами ребра,
каждое из которых задается индексами своих вершин: ai, bi.
Нумерация вершин начинается с нуля.
В окончании входных данных хранится строка W,
для которой нужно выполнить подсчет.
Выходные данные должны содержать единственное число.
1 ≤ N ≤ 104, 0 ≤ M ≤ 104, ai ≠ bi, 1 ≤ |W| ≤ 10
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|