C0031 [2001提高组-C]统计单词个数

内存限制:256 MB 时间限制:1000 ms

题目描述

给出一个长度不超过 200 的由小写英文字母组成的字母串(约定:该字串以每行 20 个字母的方式输入,且保证每行一定为 20个)。要求将此字母串分成 $k$ 份 $(1<k \le 40)$,且每份中包含的单词个数加起来总数最大(每份中包含的单词可以部分重叠。当选用一个单词之后,其第一个字母不能再用。例如字符串 this 中可包含 this 和 is,选用 this 之后就不能包含 th)。

单词在给出的一个不超过 6 个单词的字典中。

要求输出最大的个数。

输入格式

第一行为一个正整数 $(0<n\le5)$ 表示有 $n$ 组测试数据

每组的第一行有二个正整数 ($p$,$k$)

$p$ 表示字串的行数;

$k$ 表示分为 $k$ 个部分。

接下来的 $p$ 行,每行均有 20 个字符。

再接下来有一个正整数 $s$,表示字典中单词个数。$(1 \le s \le 6)$

接下来的 $s$ 行,每行均有一个单词。

输出

每行一个整数,分别对应每组测试数据的相应结果。

样例

样例输入 1

1 1 3 thisisabookyouareaoh 4 is a ok sab

样例输出 1

7

提示

this/isabookyoua/reaoh