Задача №115213. Обыкновенная задача про строки

Назовем две строки \(s\) и \(t\) эквивалентными, если для любой строки \(u\) длины 2, количество вхождений \(u\) в \(s\) совпадает с количеством вхождением \(u\) в \(t\). Таким образом, строки « aaaba », « abaaa » и « baaab » попарно эквивалентны между собой (строка « aa » входит два раза, строка « ab » один раз, строка « ba » один раз, строка « bb » не входит как подстрока), а строки « abb » и « bba » — нет.

В этой задаче вам будут даны \(Q\) строк, состоящих из символов « a », « b » и « c », для каждой из которых надо будет посчитать количество эквивалентных им непустых строк, также состоящих из символов « a », « b » и « c ». Так как это количество может быть очень большим, то надо вывести его остаток при делении на \(10^9+7\).

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

В первой строке входных данных дано число \(G\) — номер подзадачи, к которой относится текущий тест. Для теста из примера \(G = 0\).

На второй строке дано число \(q\) (\(1 \leq q \leq 10^5\)), затем следуют \(q\) строк, состоящих из символов « a », « b » и « c ». Суммарная длина строк не превышает \(10^6\).

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

Требуется вывести \(q\) целых чисел — для каждой строки необходимо вывести количество эквивалентных ей по модулю \(10^9+7\).

Система оценки

Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены. За \(n_i\) обозначена длина \(i\)-й строки во входных данных, за \(L\) обозначена сумма длин строк, за \(w\) – максимальный ответ (не взятый по модулю) среди всех запросов.

Подзадача Баллы Дополнительные ограничения Необходимые подзадачи Информация о проверке
1 11 строка \(s\) не содержит символов ' c ' первая ошибка
2 13 символы ' a ' и ' c ' в строке \(s\) не встречаются рядом 1 первая ошибка
3 11 \(n_i \leq 13\) первая ошибка
4 10 \(L \leq 40\) 3 первая ошибка
5 9 \(L \leq 60\) 3, 4 первая ошибка
6 13 \(w \leq 100\); \(L \leq 10^5\) первая ошибка
7 33 нет 1–6 первая ошибка

Примечание

Строке « abaa » эквивалентны строки « abaa », « aaba », « baab »;

Строке « abca » эквивалентны строки « abca », « bcab », « cabc »;

Строке « ccbca » эквивалентны строки « ccbca » и « cbcca »;

Строке « bacc » эквивалентна только строка « bacc ».

Примеры
Входные данные
0
4
abaa
abca
ccbca
bacc
Выходные данные
3
3
2
1
Сдать: для сдачи задач необходимо войти в систему