Строку s[a, b] = sasa + 1... sb (1 ≤ a ≤ b ≤ |s|) назовем подстрокой строки s = s1s2... s|s|, где |s| — длина строки s.
Следом непустой строки t называется множество символов, из которых она состоит. Например, след строки «aab» равен {'a', 'b'}.
Для заданного непустого множества символов C можно рассмотреть все максимальные по включению подстроки строки s, след которых равен C. Количество таких подстрок s для множества C будем называть r(C, s). Подстрока s[a, b] длины n = b - a + 1 называется максимальной по включению, если не существует удовлетворяющей заданному свойству подстроки s[x, y] длины большей n, такой что 1 ≤ x ≤ a ≤ b ≤ y ≤ |s|. Две подстроки строки s считаются различными, даже если они совпадают, но начинаются в различных позициях строки s.
На экзамене по строковедению, Поликарпу достался не самый простой билет. Ему нужно выполнить следующее практическое задание: даны строка s и непустые множества символов C1, C2, ..., Cm, для каждого множества Ci надо найти r(Ci, s). Помогите Поликарпу решить задачу, он так не хочет в армию!
В первой строке записана непустая строка s (1 ≤ |s| ≤ 106).
Во второй строке записано единственное целое число m (1 ≤ m ≤ 104). В следующих m строках записаны описания множеств Ci. В i-й строке записана строка ci, след которой равен Ci. Гарантируется, что все символы строки ci различны.
Обратите внимание, что Ci не обязательно различны. Все заданные строки состоят из строчных букв латинского алфавита.
Выведите m целых чисел — i-е число должно быть равно r(Ci, s).
aaaaa
2
a
a
1
1
abacaba
3
ac
ba
a
1
2
4
Название |
---|