CF152C Pocket Book
题目描述
有一天,小 Vasya 发现了妈妈的钱包记事本。记事本上有 $n$ 个她朋友的名字,奇怪的是每个名字都是恰好 $m$ 个字母长。我们将这些名字按照出现顺序编号为 $1$ 到 $n$。
妈妈不在家时,Vasya 决定拿名字玩。他选择三个整数 $i$、$j$、$k$($1 \leq i < j \leq n$,$1 \leq k \leq m$),然后他取出编号为 $i$ 和 $j$ 的名字,并交换它们长度为 $k$ 的前缀。例如,如果我们取名字 "CBDAD" 和 "AABRD",并交换它们长度为 $3$ 的前缀,那么结果将分别得到 "AABAD" 和 "CBDRD"。
你想知道,如果 Vasya 被允许按上述方式进行任意多次操作,那么在记事本的第 $1$ 个位置一共能够写出多少种不同的名字。每次操作时,Vasya 独立地随意选择 $i$、$j$、$k$,选择完全取决于他的意愿。由于答案可能非常大,你只需要输出对 $1000000007$ ($10^9+7$) 取模后的结果。
输入格式
第一行包含两个整数 $n$ 和 $m$($1 \leq n, m \leq 100$),分别表示名字的数量和每个名字的长度。接下来的 $n$ 行,每行包含一个由 $m$ 个大写拉丁字母组成的名字。
输出格式
输出一个整数,表示经过任意多次如题所述操作后,记事本第 $1$ 个位置上可能出现的不同名字数量。答案需对 $1000000007$ 取模。
说明/提示
在第一个样例中,Vasya 可以将第 $1$ 个位置变成以下名字:"AAB"、"AAA"、"BAA" 和 "BAB"。
由 ChatGPT 5 翻译