题目描述
Biljana喜欢制作填字游戏。她最喜欢的类型是所谓的变位词填字游戏,其中每个提示都是所需解决方案的一个变位词。
她有一组n个单词,她认为这些单词是她下一个填字游戏的好候选。我们说两个单词是相似的,如果一个单词可以通过重新排列字母得到另一个单词(即它们是变位词)。
她想从中选择一个子集,使得该子集中恰好有k对相似的单词。帮助Biljana确定满足条件的子集数量。
输入格式
第一行包含整数n(1 ≤ n ≤ 2000)和k(0 ≤ k ≤ 2000),表示单词数量和所需的相似对数。
接下来的n行,每行包含一个由最多10个小写字母组成的单词。所有单词都是不同的。
输出格式
输出所描述的满足条件的子集数量,取模10^9 + 7。
输入输出样例
输入#1
3 1
ovo
ono
voo
输出#1
3
输入#2
5 2
trava
vatra
vrata
leo
ole
输出#2
3
说明/提示
子任务 得分 约束条件
1 10 1 ≤ n ≤ 15
2 30 0 ≤ k ≤ 3
3 70 无额外约束。
第一个示例的解释:
恰好有一对相似单词的子集是{ovo, ono, voo}和{ovo, voo}。