phonenumbers

USACO Bessie has a new cell phone with nine buttons, laid out as follows:

123
456
789

Bessie is trying to type out a given phone number in a hurry, so she decides to save time by pressing multiple buttons at the same time with one of her hooves. Specifically, Bessie's hoof might press a single digit, two digits that share a side (for twelve possible pairs in total), or four digits that form a square (1245, 2356, 4578, or 5689).

For example, if the phone number Bessie is trying to type is 123659874, she might attempt to save time by

  1. Pressing 1 and 2 at the same time.
  2. Pressing 3.
  3. Pressing 6, 5, 9, and 8 at the same time.
  4. Pressing 7 and 4 at the same time.

Unfortunately, Bessie drastically overestimated her skill at performing this task - if Bessie's hoof pressess multiple buttons at the same time, then all of the digits will be typed in arbitrary order. So if Bessie attempts the above sequence of presses, she may end up typing 123596847 or 213659874 instead (or one of many other possibilities).

Given a sequence of digits that Bessie has typed, count the number of phone numbers that she could have been trying to type modulo $10^9+7$.

**Note: the time limit for this problem is 1s**

INPUT FORMAT (input arrives from the terminal / stdin):

The first line contains $T$ ($1\le T\le 10$), the number of independent test cases to solve.

The next $T$ lines each contain a nonempty string of the digits 1 through 9. It is guaranteed that the total length of these strings does not exceed $10^5$.

OUTPUT FORMAT (print output to the terminal / stdout):

For each test case, the number of phone numbers Bessie might have been trying to type modulo $10^9+7$.

SAMPLE INPUT:

5
1478
4455
5968
31313211
123659874

SAMPLE OUTPUT:

5
2
24
3
255

For the first case, Bessie might be trying to type any of the following five phone numbers:

1478
1487
4178
4187
1748

For example, if Bessie was trying to type 4187, she might have tried pressing 1 and 4 at the same time and then tried pressing 7 and 8 at the same time.

For the third case, as the numbers form a square, Bessie might have been trying to type any permutation of the input sequence.

SCORING:

  • Subtask 1 (10 Points): all phone numbers have length at most $8$.
  • Subtask 2 (10 Points): the phone number only contains 1, 2, and 3.
  • Subtask 3 (10 Points): the phone number doesn't contain the digit 5.
  • Subtask 4 (10 Points): the phone number only contains 5, 6, 8, and 9.
  • Subtask 5 (15 Points): the sum of the string lengths does not exceed $10^2$.
  • Subtask 6 (15 Points): the sum of the string lengths does not exceed $10^3$.
  • Subtask 7 (15 Points): the sum of the string lengths does not exceed $10^4$.
  • Subtask 8 (15 Points): no additional constraints.

Problem credits: Nick Wu


Submitting to 'phonenumbers'


You're not logged in! Click here to login


Submitting to 'phonenumbers'


You're not logged in! Click here to login


Submitting .cpp to 'phonenumbers'


You're not logged in! Click here to login

Time Limit: 1 Seconds
Memory Limit: 1024MB
Your best score: 0
Source: USACO 2022 Feb, Platinum
Editorial: 1

Subtask Score
1 10
2 10
3 10
4 10
5 15
6 15
7 15
8 15
9 0