#arc089d. [arc089_d]ColoringBalls

[arc089_d]ColoringBalls

题目描述

NN 个白色的球排成一行,从左到右编号为 1,2,..,N1,2,..,N。AtCoDeer 驯鹿想要把其中一些球涂成红色和蓝色,同时保留一些白色的球。

给定长度为 KK 的字符串 ss。AtCoDeer 按顺序执行以下操作,对每个 ii11KK

  • ii 步操作:选择一段连续的球(可以为空),如果 ss 的第 ii 个字符是 r,则将这些球涂成红色;如果字符是 b,则将这些球涂成蓝色。

这里,如果一个已经涂过颜色的球再次被涂色,球的颜色将被覆盖。然而,由于染料的特性,不能直接将一个白色、未涂色的球涂成蓝色。也就是说,当 ss 的第 ii 个字符是 b 时,选择的连续球段不能包含白色的球。

完成所有操作后,有多少种可能的球颜色序列?由于数量可能很大,将结果对 109+710^9+7 取模。

约束条件

  • 11 NN 7070
  • 11 KK 7070
  • s|s| \= KK
  • ss 由字符 rb 构成。
  • NNKK 是整数。

输入

输入数据从标准输入读取。数据格式如下:

NN KK ss

输出

输出完成所有操作后,不同的球颜色序列的数量,对 109+710^9+7 取模。


示例输入 1

2 2
rb

示例输出 1

9

有九种可能的球颜色序列,如下所示:

ww, wr, rw, rr, wb, bw, bb, rb, br

这里,r 表示红色,b 表示蓝色,w 表示白色。


示例输入 2

5 2
br

示例输出 2

16

由于不能直接将白色的球涂成蓝色,在第一步操作中只能选择一个空段。


示例输入 3

7 4
rbrb

示例输出 3

1569

示例输入 4

70 70
bbrbrrbbrrbbbbrbbrbrrbbrrbbrbrrbrbrbbbbrbbrbrrbbrrbbbbrbbrbrrbbrrbbbbr

示例输出 4

841634130