[USACO20DEC] Bovine Genetics G
题目描述
Farmer John 在对他的奶牛进行基因组测序之后,他现在要进行基因组编辑了!我们知道,基因组可以用一个由 A、C、G、T 组成的字符串来表示。Farmer John 考虑的基因组的最大长度为 $10^5$。
Farmer John 从一个基因组开始,通过下列步骤对其进行编辑:
1. 在所有连续相同字符之间的位置将当前基因组切开。
2. 反转所有得到的子串。
3. 按原先的顺序将反转的子串进行联结。
例如,如果 FJ 从基因组 AGGCTTT 开始,他会执行下列步骤:
1. 在连续的 G 和 T 之间切开,得到 AG | GCT | T | T。
2. 反转每一子串,得到 GA | TCG | T | T。
3. 将这些子串联结起来,得到 GATCGTT。
不幸的是,在对基因组进行编辑之后,Farmer John 的计算机崩溃了,他丢失了他开始时的基因组序列。此外,编辑后的基因组的部分位置遭到了破坏,这些位置用问号代替。
给定编辑后的基因组序列,请帮助 FJ 求出可能的开始时的基因组序列的数量,对 $10^9+7$ 取模。
输入输出格式
输入格式
一个非空字符串,其中每个字符为 A、G、C、T 和 ? 之一。
输出格式
输出可能的开始时的基因组序列的数量模 $10^9+7$ 的结果。
输入输出样例
输入样例 #1
?
输出样例 #1
4
输入样例 #2
GAT?GTT
输出样例 #2
3
说明
### 样例 2 解释:
除了在之前说明过的 AGGCTTT 之外,还有两种可能的开始时的基因组。
`AGGATTT -> AG | GAT | T | T -> GA | TAG | T | T -> GATAGTT`
`TAGGTTT -> TAG | GT | T | T -> GAT | TG | T | T -> GATTGTT`
### 测试点性质:
- 测试点 1-4 中,基因组的长度不超过 $10$。
- 测试点 5-11 中,基因组的长度不超过 $10^2$。
- 测试点 12-20 没有额外限制。
供题:Benjamin Qi