众所周知,Anton Trygub 喜欢出关于包含字符 ABC 的字符串的题目。如果允许我们对字符串进行操作,他会更高兴。为了向他致敬,同时也为了进一步改进他的题目,这里有一个关于包含字符 ABCD 的字符串的问题。给定一个由字符 ABCD 组成的字符串,通过零次或多次应用以下操作,你能得到多少种不同的字符串?
- 选取一个长度为 4 的子串,该子串必须是 ABCD 的循环移位,并将其向左或向右循环移动 1 位。(ABCD 的循环移位包括 BCDA、CDAB 和 DABC。)
由于这个数字可能非常大,请输出其对 $10^9 + 7$ 取模的结果。
输入格式
输入的第一行也是唯一一行包含字符串 $S$,$ (1 \le |S| \le 2000) $。
输出格式
输出一行一个整数,表示通过重复应用该操作可以得到的不同字符串的数量,对 $10^9 + 7$ 取模。
样例
输入格式 1
DABC
输出格式 1
4
说明
在第一个样例中,该字符串本身就是 ABCD 的一个循环移位,因此在 2 次操作内,我们可以得到该字符串的所有循环移位,共有 4 种。
输入格式 2
AABBCCDD
输出格式 2
1
说明
在第二个样例中,初始时无法进行任何移动,因此只能得到 1 种不同的字符串。
输入格式 3
ABCDABCD
输出格式 3
52
说明
在第三个样例中,通过重复应用该操作,总共可以得到 52 种不同的字符串。