题目描述
给定一个整数 N 和四个字符 cAA、cAB、cBA 和 cBB。这四个字符保证都是 A
或 B
。
Snuke 有一个字符串 s,初始为 AB
。
记 ∣s∣ 为字符串 s 的长度。Snuke 可以以任意顺序、零次或多次进行以下四种操作:
- 选择 i,满足 1≤i<∣s∣,si =
A
,si+1 = A
,并在字符串 s 的第 i 和第 (i+1) 之间插入字符 cAA。
- 选择 i,满足 1≤i<∣s∣,si =
A
,si+1 = B
,并在字符串 s 的第 i 和第 (i+1) 之间插入字符 cAB。
- 选择 i,满足 1≤i<∣s∣,si =
B
,si+1 = A
,并在字符串 s 的第 i 和第 (i+1) 之间插入字符 cBA。
- 选择 i,满足 1≤i<∣s∣,si =
B
,si+1 = B
,并在字符串 s 的第 i 和第 (i+1) 之间插入字符 cBB。
计算满足 Snuke 进行操作后字符串 s 长度为 N 的字符串数量,对 (109+7) 取模。
约束条件
- 2≤N≤1000
- cAA、cAB、cBA 和 cBB 均为
A
或 B
。
输入
从标准输入读入输入数据的格式如下:
N
cAA
cAB
cBA
cBB
输出
输出满足 Snuke 进行操作后字符串 s 长度为 N 的字符串数量,对 (109+7) 取模。
示例输入 1
4
A
B
B
A
示例输出 1
2
- 当 Snuke 进行操作后,有两种可能的字符串:
ABAB
和 ABBB
。
示例输入 2
1000
B
B
B
B
示例输出 2
1
- 当 Snuke 进行操作后,只有一种可能的字符串。