题目描述
At this point we already know that students love to sleep. Patrik is a record holder in this category. He wakes up only when he needs to eat or if he wishes to play *FIFA 20*. Therefore, his dreams usually revolve around football. In his last dream, he found himself in the role of a football manager of his favourite team – GNK Dinamo Zagreb.
His job is to select $N$ players that will defend the blue colors in the next season, but the board has some peculiar requests. They are:
- All players must have surnames of distinct lengths.
- Surname of a player must appear as a continuous subsequence of surnames of all players whose surnames are longer.
To make his job easier, Patrik divided the potential players in $N$ buckets such that players in $i$-th bucket have exactly $i$ letters in their surname. In each of these buckets there are exactly $K$ players. Patrik wants to know in how many distinct ways (modulo $10^9 + 7$) can he choose the players for his squad while also conforming to the given requests.
输入格式
The first line contains two integers $N$ $(1 \le N \le 50)$ and $K$ $(1 \le K \le 1\,500)$.
Each of the next $N$ lines contains $K$ not necessarily distinct surnames of players. The surnames of players in $i$-th of those lines consist of exactly $i$ lowercase letters from the English alphabet.
输出格式
In the only line you should output the answer from the task description.
样例输入 #1
3 2 a b ab bd abc abd
样例输出 #1
5
样例输入 #2
3 3 a b c aa ab ac aaa aab aca
样例输出 #2
6
样例输入 #3
3 1 a bc def
样例输出 #3
0
提示
**Clarification of the first example:** Patrik can choose the following teams: `(a, ab, abc)`, `(a, ab, abd)`, `(b, ab, abc)`, `(b, ab, abd)` and `(b, bd, abd)`.
来源
COCI 2019/2020 CONTEST #6