eolymp
bolt
Try our new interface for solving problems
Problems

Подсчет слов

Подсчет слов

Когда Фалес выехал на отдаленный остров, для того чтобы провести летний отпуск, ему пришлось искать, чем бы заняться, т.к. на острове было достаточно скучно. Однажды, Фалес заметил, что вдоль дорог написаны слова или фразы. Он не мог понять некоторые из них, но это не остановило его от изобретения игры. Для того чтобы сыграть в эту игру, нужно выдумать слово и посчитать, как много раз оно встречается в тексте вдоль определенного сегмента дороги. После того, как Фалес сыграл в эту игру несколько раз, он изобрел простой способ подсчета слов, и решил испробовать себя в более сложной игре. Фалес нарисовал карту местности и отметил все возможные пути от его текущего положения до всех портов, откуда он мог бы уплыть домой. Он заметил, что хотя все пути могут начинаться одинаково, они все в итоге расходятся и больше никогда не пересекаются -- все они приводят к разным портам. Правила более сложной игры требовали посчитать количество различных появлений выбранного слова вдоль различных путей. Ваша программа должна сделать именно это. \InputFile Первая строка содержит целое число \textbf{N} (\textbf{2} ≤ \textbf{N} ≤ \textbf{15000}) -- число последующих строк. Каждая из следующих \textbf{(N-1)}-й строк файла содержит данные об узлах. Все узлы формируют древовидную структуру. В частности, узел \textbf{0 }представляет исходную точку, а все остальные узлы, пронумерованные от \textbf{1} до \textbf{N-1}, представляют развилки или порты. Таким образом, каждая из последующих \textbf{N-1} строк содержит два целых числа представляющих два узла \textbf{I}, \textbf{J }(\textbf{0} ≤ \textbf{I}, \textbf{J} ≤ \textbf{N-1}) и текст \textbf{S} длинной \textbf{L} символов (\textbf{1} ≤ \textbf{L} ≤ \textbf{1000}), которые задают сегмент дороги от узла \textbf{I} к узлу \textbf{J }(где \textbf{I} всегда предшественник \textbf{J}) с текстом вдоль сегмента дороги. Очевидно, что нет дороги ведущей к узлу \textbf{0}, и ни одна дорога не выходит из порта. Последняя строка файла содержит задуманное Фалесом слово. \OutputFile Выходной файл должен содержать единственное целое число -- количество различных появлений слова вдоль всех возможных путей. Появление идентифицируется начальной и конечной точками (конечная точка встречается на пути позже начальной). Появление существует, когда конкатенация всех последовательных символов от начальной до конечной точки (включительно) формирует искомое слово. Появление слова считается отличным от другого появления, когда у него иная конечная и/или начальная точка. Все символы -- малые символы латинского алфавита. \includegraphics{https://static.e-olymp.com/content/7e/7ec554a78261727b209f2a85fdba8b9cbb98f001.jpg}
Time limit 1 second
Memory limit 64 MiB
Input example #1
11
0 7 who
7 8 neyz
7 1 me
7 2 ne
2 3 ver
2 4 sthoneyz
2 5 y
7 6 ney
6 9 yenoh
6 10 xyz
honey
Output example #1
4

Example description: Четыре появления могут быть получены при прохождении по следующим дорогам: (0-7-6), (0-7-8), (0-7-2-5), (2-4).