你发现了伟大的法老 T’om Bha Ter 失落已久的陵墓。在躲过了蛇阱、巨石陷阱、蚁穴陷阱、流沙陷阱和速度陷阱等一系列狡诈的机关后,你已经受够了这些陷阱。在你和一堆价值连城、属于博物馆的文物之间,只剩下最后一个挑战。你从北侧进入一个房间,房间的地板是一个矩形网格,每个地砖上都刻有一个字形(glyph)。一块小牌子上列出了一系列字形单词(由单个字形按特定顺序构成),并附有以下简短的说明:
- 从任意给定的地砖出发,你只能向南、向西或向东移动一格。
- 你不能重复踏上同一块地砖。
- 你所走的路径必须拼写出一系列来自给定列表的完整字形单词(允许重复使用字形单词)。
- 如果存在多条路径,你必须找到踏上地砖数量最少的那条路径。
如果不遵守这些规则中的任何一条,你就会坠入无底深渊。既然你带了笔记本电脑,那就立刻开始编程吧。
输入格式
输入的第一行包含三个正整数 $m, n, k$ ($m, n, k \le 50$),其中 $m$ 和 $n$ 是矩形网格的尺寸,$k$ 是字形单词的数量。接下来的 $m$ 行包含 $n$ 个大写字母,由空格分隔,表示矩形网格。接下来的 $k$ 行每行包含一个字形单词,同样完全由大写字母组成。每个字形单词最多包含 50 个字母。
输出格式
如果存在一条从任意最北端地砖出发,到达任意最南端地砖,且遵守上述所有规则的路径,则输出该最短路径的长度。否则输出 impossible。
样例
样例输入 1
3 4 1 X X P X X X A T X X X H PATH
样例输出 1
4
样例输入 2
5 5 2 X X P X X X X A T X X X H H X X M O X X X E X X X HOME PATH
样例输出 2
8
样例输入 3
5 5 2 X X P X X X X A T X X X H X X X M O X X X E X X X HOME PATH
样例输出 3
impossible