题目描述
找单词是一种众所周知的业余爱好,尽管近年来它的声望有所下降。这款游戏的目标是在一个矩阵中找到单词,矩阵中的每个单元格都包含一个字母。
Bibika 和她的哥哥一直在玩 "找单词 "游戏,但很快他们就失去了兴趣,因为找到所有单词变得相对容易。Bibika 想让弟弟远离电脑,于是她在网上搜索了同类游戏,最后找到了《Lavaspar 狩猎》。
Lavaspar Hunting 是一款沿袭了著名的 "Word Search"(找字游戏)理念的游戏。不过,游戏的目标不再是简单地在矩阵中找到一个单词,而是找到该单词的任何一个变位词,从而增加了游戏的难度和趣味性。可以在行中、列中或对角线上找到字谜。
变位词是将另一个词的字母重新排列形成的词。有时,一个单词在语言中并不存在,但这并不重要。例如,balo、loba 和 aolb 就是 bola 这个单词的变位。
毕比卡意识到,矩阵中的同一个单元格有可能构成不同单词的部分变位,于是她开始称这些特殊单元格为 "变位单元格"。
现在她想知道,给定一个数组配置和一个单词集合,一共有多少个特殊单元格?

上图是第一个示例,单词集合包括三个单词:bola、casa 和 boi。每种颜色的矩形代表词条中不同单词的变形。 $3$ 特殊单元格被涂成黄色。
输入格式
第一行包含两个整数 $L$ 和 $C$ ,分别对应数组的行数和列数。
接下来的 $L$ 行中的每一行都包含一个由 $C$ 个字母组成的单词。
这些行之后的一行包含一个整数 $N$ ,即后面单词集合的单词数。
最后,现在有 $N$ 行,每行包含单词集中的一个单词。
数组中的所有字符以及单词集合中的每个单词都是英文字母的大写字母。
单词集中的 $N$ 个单词中没有两个是相互对应的。
- $2 \le L, C \le 40$ .
- $2 \le N \le 20$ .
- 每个 $N$ 单词的字母数 $P$ 都在区间 $2 \le P \le \min(15, \max(L, C))$ 内。
输出格式
输出由一行组成,其中包含一个与特殊单元格数量相对应的整数。
样例输入 #1
4 5
XBOIC
DKIRA
ALBOA
BHGES
3
BOLA
CASA
BOI
样例输入 #2
3 3
AAB
ABA
BAA
2
ABA
BBB
样例输入 #3
2 4
AAAA
AAAA
2
AAA
BBB
来源
2020-2021 ACM-ICPC Brazil Subregional Programming Contest