#286. 基因重组

基因重组

题目描述

某种生物的基因序列由 01 组成,可以看成是一个 01 字符串。

现在,你得到了两个基因序列 A 和 B,长度分别为 n 和 m。你想要把它们进行重组,得到一个新的基因序列 C。重组方式是:

每次从 A 和 B 中任选一个,从其尾部取走一个字符,将其拼接到 C 的末尾。最后就会得到一个长度为 n+m 的字符串,即 C。

不同的操作方式,可能会得到相同的基因序列。

举个例子,假如 A = 0, B = 10,则你有可能得到两种基因序列: 001(有两种操作方式),或 010(有一种操作方式)。

假设最后得到的不同的基因序列有 k 种,得到其中第 i 种序列的操作方式有 aia_i 种,请你输出 i=1kai2\sum \limits_{i=1}^{k} a_i^2 的值。

答案可能很大,你需要将其对 (109+7)(10^9+7) 取模后输出。

输入格式

第一行:两个整数 n,mn, m

第二行:一个长度为 nn 的字符串 A

第三行:一个长度为 mm 的字符串 B

输出格式

一个整数,表示答案对 (109+7)(10^9+7) 取模的结果。

样例输入 #1

1 2
0
10

样例输出 #1

5

数据范围

  • 30%30\% 的数据, 1n,m121 ≤ n,m ≤ 12
  • 100%100\% 的数据, 1n,m5001 ≤ n,m ≤ 500,保证 A、B 中只包含 01