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

Задача . Phone Numbers


Задача

Темы:
Беси купила новый телефон. Кнопки на нём расположены так:

123
456
789

Беси может нажимать одну клавишу, две клавиши одновременно (имеющие общую сторону, всего 12 комбинаций), 4 клавиши одновременно, которые формируют квадрат (1245, 2356, 4578, or 5689).

Например, если телефонный номер 123659874, она может сэкономить время следующим образом:

  1. Нажать 1 и 2 одновременно.
  2. Нажать 3.
  3. Нажать 6, 5, 9, 8 одноврменно.
  4. Нажать 7 и 4 одновременно.

Однако при нажатии нескольких клавиш одновременно, цифры могут могут записаться в произвольном порядке. Например, после последнего нажатия (7 и 4 одновременно) может получиться 123596847 или 213659874

По заданной последовательности цифр, вычислите количество телефонных номеров, которые она может набрать, по модулю \(10^9+7\).

**Замечание: Время на тест для этой задачи 4s, в два раза больше чем обычно..**

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит \(T\) (\(1\le T\le 10\)), количество независимых тестов.

Каждая из последующих \(T\) строк содержит непустую строку цифр от 1 до 9. Гарантируется, что длина этой строки не превысит \(10^5\).

ФОРМАТ ВЫВОДА (на экран / stdout):

Для каждого теста выведите количество телефонных номеров, которые Беси может набрать по модулю \(10^9+7\).


Примеры
Входные данныеВыходные данные
1 5
1478
4455
5968
31313211
123659874
5
2
24
3
255

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

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