张经理的字符串
题号:NC205897
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

张经理有n个字符串和一个转化表,转化表里记录了m个字符串。

张经理对其拥有的字符串可以进行3种操作:

1、在一个字符串末尾删除一个字符

2、在一个字符串末尾添加一个任意字符

3、若有一字符串s等于转化表中记录的某一字符串,则可将s转化为转化表中记录的任一字符串

张经理的舍友要送给他一个字符串p,但只告诉张经理p等于他拥有的某一字符串的某一非空前缀。

张经理想知道当p分别等于其拥有的每个串的每个非空前缀时,将其拥有的串和p转化为相同字符串(可以为空)需要的最少操作数。

输入描述:

第一行输入两个整数n,m(1<=n, m<=40)

第2到n+1行输入张经理拥有的n个字符串

第n+2行到n+m+1行输入转化表中的m个字符串

每个字符串都由小写英文字母组成,且长度不超过400

输出描述:

分别输出当p等于张经理拥有的每个串的每个非空前缀时(字符串按输入顺序,前缀按从短到长),张经理将其所有的串和p转化为相同字符串(可以为空)所需的最少操作数,数字间用空格间隔。
示例1

输入

复制
2 2
abcd
ab
abcd
ab

输出

复制
2 1 2 1 2 1

说明


示例2

输入

复制
4 2
a
b
b
b
npu
acm

输出

复制
4 2 2 2

说明


备注: