题号: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转化为相同字符串(可以为空)所需的最少操作数,数字间用空格间隔。
备注: