先说明一个重要问题:按照题面给出的两个条件,样例中的第一组 a?b 的答案应为 24,因为中间的 ? 不能填 a,也不能填 b,其余 24 个小写字母都合法。题面样例输出 23 与题意不一致,下面题解严格按照题面条件实现。
我们只需要统计满足:
给定一个仅由小写字母与 ? 组成的字符串 s (长度为 m )。求有多少个不同的仅由小写字母组成的字符串 t (长度为 n ) 满足以下条件:
1)对所有下标 i(1≤i≤n),若 s[i]=?,则 t[i]=s[i];
2)任意相邻字符均不相同,即对所有 i(1≤i<n),有 t[i]=t[i+1]。
由于答案可能很大,请将答案对 (109+7) 取模后输出。
每个测试文件均包含多组测试数据。第一行输入一个整数 T(1≤T≤105) 代表数据组数,描述如下:
第一行输入一个整数 n(1≤n≤105) ;
第二行输入一个长度为 n 、且只由小写字母和 ? 构成的字符串 s 。
保证所有测试中 n 的总和不超过 5×105 。
对于每组测试数据,输出一行一个整数,表示满足条件的字符串数对 109+7 取模的结果。
输入
5
3
a?b
2
??
4
a??a
4
aabb
4
abab
输出
24
650
600
0
1