最小交换次数

时间限制: 1000 ms 内存限制: 131072 kb
总通过人数: 0 总提交人数: 0

题目描述

给定字符串 $S$ ,定义它的长度为 $|S|$,每次可以选择一个 $i$ ,需要满足 $i < |S|$ 且 $S_i \neq S_{i+1}$ ,然后从 $S$ 中删除 $S_{i+1}$ ,例如 $abc$ 可以选择 $i = 1$ 变成$ac$ 。定义 $f(S)$ 为选择一个合适的操作序列,最终能得到的 $S$ 的最短长度,例如 $f(abc) = 1,$ $f(aa)=2$ 。

现在给定一个字符串 $C$ ,只包含小写字母和 . 。定义 $\displaystyle{f(C)=\sum_{T} {f(T) \cdot g(C,T)}}$,求 $f(C)$ 对 $10^9 + 7$ 取模的值。其中,如果将 $C$ 中每个 . 都替换成某个小写字母能得到 $T$ ,不同位置的 . 可以用不同的小写字母替换,那么 $g(C,T)=1$ ,否则 $g(C,T) = 0$ 。

输入

第一行包含一个正整数 $T$ ,表示有 $T$ 组测试数据。

接下来依次给出每组测试数据。对于每组测试数据:

仅一行,包含一个由小写字母和 . 组成的字符串 $C$ 。

$1 \leq T \leq 15, 1 \leq |C| \leq 10^5$

输出

对于每组数据输出一行,包含一个整数,表示 $f(C)$ 对 $10^9 + 7$ 取模的值。

输入样例

2
abc
a.

输出样例

1
27

样例解释

对于第二组数据,若 .a 替换,则最终长度为 2 ,否则最终长度为 1 ,因此答案是 2 + 25 = 27


Author: chffy

相关推荐