#P2182. 翻硬币

翻硬币

题目描述

小 Z 离开家的时候忘记带走了钱包,掉下的硬币在桌子上排成了一列。正在等着哥哥回来的小 D 坐在桌子旁边,无聊地翻着桌子上的硬币。

出于某种爱好,小 D 一次一定会同时翻转 MM 枚硬币。由于小 D 是一个爱动脑的小学生,这样进行了若干次之后她很快想到了一个问题:有多少种方法能够在 KK 次翻转后把硬币由原来的状态变成现在这样呢?

因为小 D 是个好学的小学生,她只需要你告诉她方案数对 109+710^9+7 取模的值以方便她进行验算就可以了。

输入格式

第一行,包含三个字符 N,K,MN,K,M,表示硬币的数量,翻转的次数和每次翻转的硬币数量。

232 \sim 3 行,包含 NN 个字母,表示硬币在一开始的状态和最终要变成的状态。11 表示正面而 00 表示背面。

输出格式

一行包含一个整数,表示方案数对 109+710^9+7 取模的值。

3 2 1
100
001
2

提示

样例解释

存在两种方案:

  • 100101001100 \to 101 \to 001
  • 100000001100 \to 000 \to 001

数据规模

  • 对于 30%30\% 的数据,N4N \le 40K50 \le K \le 5
  • 对于 60%60\% 的数据,N10N \le 10
  • 对于 100%100\% 的数据,1N1001 \le N \le 1000K1000 \le K \le 1000MN0 \le M \le N