在摩尔斯电码中,每个字母都由“点”(dot)和“划”(dash)组成的序列表示。然而,单凭这一点还不足以通过无线电传输文本。此外,摩尔斯电码还定义了点和划的持续时间,以及它们之间各种不同的停顿时间。
在本题中,我们将处理在发送端使用摩尔斯电码编码的数字化无线电信号。该信号表示为一个由 +(加号)和 -(减号)字符组成的字符串。每个字符定义了在相应的时间滴答(tick)内是否有声音:加号表示有声音,减号表示无声音。
为了便于讨论,假设摩尔斯电码有五种类型的元素。这些元素根据下表写入信号中:
| 信号 | 元素 | 含义 |
|---|---|---|
+ |
“点”(dot) | 1 个滴答内有声音 |
+++ |
“划”(dash) | 3 个滴答内有声音 |
- |
字母内部停顿 | 1 个滴答内无声音 |
--- |
字母之间停顿 | 3 个滴答内无声音 |
----- |
单词之间停顿 | 5 个滴答内无声音 |
例如,使用标准拉丁摩尔斯电码,HELLO WORLD 这两个单词将被编码为一个包含 63 个元素、共 109 个滴答的信号:
请注意,单词之间有 5 个滴答的停顿,并且在文本的开头和结尾没有任何停顿或特殊元素。
众所周知,自动数字化过程会产生误差,从而使信号难以解码。该过程可以将任何元素的长度缩短或延长 1 个滴答,但长度为 1 个滴答的元素不能变得更短。
给你一个词典和一个数字化信号。请找出数字化过程可能产生的最少错误数量,并恢复原始文本。假设:
- 原始文本仅包含词典中的单词;
- 使用的是拉丁摩尔斯电码;
- 除了上述描述的错误外,没有其他错误。
输入格式
输入第一行包含两个整数:$M$ 表示词典中的单词数量,$N$ 表示信号中的滴答数($1 \le M, N \le 5\,000$)。
接下来的 $M$ 行,每行包含一个词典中的单词。每个单词均非空,且仅包含大写拉丁字母。所有这些单词的长度之和不超过 $5\,000$。
其余行包含数字化信号,即一个总长度为 $N$ 的由 + 和 - 字符组成的序列。该序列可以被任意分割成多个非空行。信号中至少包含一个 +。
文本格式的拉丁摩尔斯电码可在本题面附近下载。
输出格式
如果输入数据中提供的信号在给定条件下无法产生,则输出单个数字 -1。
否则,在第一行输出一个整数 $K \ge 0$,表示可能的最少错误数量;在第二行输出能够产生该信号且错误数量为 $K$ 的原始文本。文本中的单词之间必须恰好用一个空格分隔。
如果有多种能够以最少错误数量产生该信号的原始文本方案,请输出其中字典序最小的一种。假设空格的字典序小于任何字母。
样例
输入 1
2 109 HELLO WORLD +-+-+-+---+---+-+++-+-+--- +-+++-+-+---+++-+++-+++----- +-+++-+++---+++-+++-+++--- +-+++-+---+-+++-+-+---+++-+-+
输出 1
0 HELLO WORLD
输入 2
3 115 WORLD PROGRAM HELLO +-+-+-+---++--+-++++-+-+--- +-++-+-++----+++-+++-+++------ +-+++-+++---+++-+++-++--- +-++++-+---++-+++-+-+---+++-+--++
输出 2
12 HELLO WORLD
输入 3
1 13 E +-----------+
输出 3
-1
输入 4
1 13 HELLO +--+--+--+--+
输出 4
-1
说明
第一个样例与题目描述中的例子完全相同,没有任何错误。在第二个样例中,文本相同,但有 12 个元素被缩短或延长了 1 个滴答。
在第三个样例中,存在一个 11 个滴答的停顿,这是不可能产生的。最长的元素是单词之间的 5 滴答停顿,由于错误,它最多只能变成 6 个滴答长。
在第四个样例中,有五个点,它们可以以各种组合组成字母 E、I、S 和 H,然而词典中只有唯一一个单词 HELLO,无法仅用这些字母拼出。