#C09L05P05. C09.L05.线性DP.练习5.句子
C09.L05.线性DP.练习5.句子
题目描述
明明与可可经常在网上聊天,但最近他们发现父母们可能查看了他们的隐私谈话。因此他们发明了一些加密方法的语言。
所有合法的单词在给定的单词列表中。一个句子由一些合法单词连续组成(没有空格)。每个单词可以出现任意多次。特殊的加密方法是:每个单词在传送之后,它的字母有可能打乱了重新排列。这次加密的代价定义为:加密前的单词和加密后的单词有多少位置上的字母不相同。比如:"abc" 变为 "abc",则代价为 0 。如果变为 "acb"、"cba" 或 "bac" 则代价为 2 。如果变为 "bca" 或 "cab" 则代价为 3 。
对于接收到的句子,解码成加密前的句子可能有多种方案,但明明和可可知道只有句子的加密总代价最小的方案才是真正的原来的句子。面对这么复杂的加密语言,他们的父母当然看不懂。但不幸的是,他们自己也搞不懂了。他们需要你帮助研究。
任务
对于给定的合法单词列表和加密后的句子,求出由合法单词通过加密形成现在句子的最小代价。如果没有可能,则输出 -1 。
提示:一个单词如果出现多次,每次加密后的单词并不一定相同。
输入格式
第一行:一个整数 n,表示合法单词个数。
下面 n 行:每行一个字符串,表示一个合法单词。
最后一行:一个字符串,表示加密后的句子。
数据范围
合法单词数:;
每个单词长度:;
句子长度: ;
所有单词和句子中的字符都是小写字母 ('a'-'z')。
输出格式
一个整数。
样例
4
one
two
three
there
neotowheret
8
样例解释
"one" -> "neo" 代价为 3
"two" -> "tow" 代价为 2
"three" -> "heret" 代价为 3
"there" -> "heret" 代价为 5
最小代价=3+2+3=8
相关
在以下作业中: