#P8194. [USACO22FEB] Phone Numbers P

[USACO22FEB] Phone Numbers P

题目描述

Bessie 获得了一个九键的新手机,键位如下所示:

123
456
789

Bessie 正在匆忙中尝试打出一个给定的电话号码,所以她决定通过用她的其中一个蹄子一次按下多个按钮的方式来节省时间。具体来说,Bessie 的蹄子可能按下一个键,两个共用一条边的键(总共有 1212 种可能),或者形成一个正方形的四个键(12451245235623564578457856895689

例如,如果 Bessie 要打的电话号码是 123659874123659874,她可能通过如下方法按键来尝试节省时间:

  1. 同时按下 1122
  2. 按下 33
  3. 同时按下 6,5,9,86,5,9,8
  4. 同时按下 7744

不幸的是,Bessie 大大高估了她执行这项任务的技能——如果 Bessie 的蹄子同时按下多个按键,那么所有这些按键会以任意顺序输入。所以如果 Bessie 尝试按上述按键顺序,结束时她输入的电话号码可能是 123596847123596847213659874213659874(或者其他可能的序列)。

给定一个 Bessie 已经输入的序列,请计算她可能想输入的电话号码的数量对 109+710^9+7 取模后的值。

输入格式

第一行一个整数 TT1T101\le T\le 10),表示要求解的独立测试数据组数。

接下来 TT 行,每行一个非空且只包含 1199 的数字串。保证输入中所有的数字串总长度不超过 10510^5

输出格式

对于每组数据,输出 Bessie 可能想输入的电话号码个数对 109+710^9+7 取模后的值。

5
1478
4455
5968
31313211
123659874
5
2
24
3
255

提示

【样例解释】

对于第一组数据。Bessie 可能想输入如下五个电话号码之一:

1478
1487
4178
4187
1748

例如,如果 Bessie 想输入 41874187,她可能会尝试同时按下 1144,然后同时按下 7788

对于第三组数据,因为这些数字组成了一个正方形,Bessie 可能想输入的电话是输入序列的任何排列。

【数据范围】

  • 对于第 232\sim 3 组数据,所有电话号码的长度最多为 88
  • 对于第 454\sim 5 组数据,电话号码只包含 1,21,233
  • 对于第 676\sim 7 组数据,电话号码不包含 55
  • 对于第 898\sim 9 组数据,电话号码只包含 5,6,8,95,6,8,9
  • 对于第 101210\sim 12 组数据,电话号码总长度不超过 10210^2
  • 对于第 131513\sim 15 组数据,电话号码总长度不超过 10310^3
  • 对于第 161816\sim 18 组数据,电话号码总长度不超过 10410^4
  • 对于第 192119\sim 21 组数据,无附加限制。