4750. 无线密码

给定一个字符串集合 $S$,集合中包含 $m$ 个由小写字母构成的字符串。

现在,我们需要构造一个字符串 $L$,要求:

  1. $L$ 的长度恰好为 $n$。
  2. $L$ 由小写字母构成。
  3. 集合 $S$ 中至少有 $k$ 个元素是 $L$ 的子串。

请计算满足条件的 $L$ 的数量。

输入格式

输入包含多组测试数据。

每组数据第一行包含三个整数 $n,m,k$。

接下来 $m$ 行,每行包含一个由小写字母构成的字符串,表示集合 $S$ 中的一个元素。

当输入 $n=0,m=0,k=0$ 时,表示输入结束,不做处理。

输出格式

每组数据输出一行结果,一个整数,表示满足条件的 $L$ 的数量对 $20090717$ 取模后的结果。

数据范围

每个输入最多包含 $100$ 组数据。
$1 \le n \le 25$,
$0 \le m \le 10$,
$0 \le k \le m$,
$S$ 中的字符串各不相同,且长度范围 $[1,10]$。

输入样例:

10 2 2
hello 
world 
4 1 1
icpc 
10 0 0
0 0 0

输出样例:

2
1
14195065