28. 子序列中的 k 种字母(第一期模拟笔试)

内存限制:128 MB 时间限制:2.000 S

题目描述

一个序列的子序列是指从原序列中选取部分元素,并保持它们在原序列中的相对顺序所形成的新序列。这意味着在子序列中,元素的相对顺序与它们在原序列中的相对顺序保持一致,但不一定要求是连续的。注意,原序列也可以视为自己的子序列。 

现有一个长度为 n 的仅由小写字母组成的字符串 s,求 s 有多少个子序列恰好包含 k 种字母。

输入

输入仅包含一组测试数据。测试数据包含两行: 

第一行包含两个整数 n 和 k(1 ≤ n ≤ 1000,1 ≤ k ≤ 26),用空格隔开,表示字符串的长度和符合要求的子序列的所需长度。

第二行是一个由小写字母组成的字符串,长度为 n。 

输出

对于输入的测试数据,输出一个整数,表示计算得到的答案。

样例输入 复制

6 5
eecbad

样例输出 复制

3

提示

s有两个子序列"ecbad"满足要求(重复也算),同时s自身也满足要求,所以答案是3; 注意:由于答案会比较大,所以需要将答案对(10^9 + 7)取模以后再输出。