P7081 [NWRRC 2013] Correcting Curiosity

题目描述

# [NWRRC2013] Correcting Curiosity “好奇号”是探索火星上盖尔陨石坑的火星车。最近,它在火星土壤中发现了水存在的证据,这将使未来的火星登陆任务变得更加容易。$ $ “好奇号”可以用高达$32 Kbit/s$的速度与地球直接通信 ,但在地球和火星之间传输信号分别平均需要$14$秒和$6$秒。 `你刚刚看到一块石头并踩下了刹车,但你知道火星车已经经过那块石头了` -- 火星车司机Matt Heverly解释道。`所以我们需要规划路线,然后写下一个简单的命令列表:如向前移动一米,左转,拍照等等`. 有时你有必要对一些突发事件做出非常迅速的反应。例如,当相机看到了一些有趣的东西,那么你可能会想改变火星车的路线来拍摄的照片。为此,您需要发送一个形式为 $s/〈string〉/〈replacement〉/g$ . 这将替换所有出现的 $〈string〉,$ 从最左边的开始, 到 $〈replacement〉.$ 更确切地说,如果A是非空字符串,而$B$是字符串, 则要将替换命令$s/A/B/g$应用于字符串$s$,执行以下操作: 在$S$中查找最左边出现的A,这样$S=$SL$+$A$+$SR。 如果没有A,请停止操作。$S$就是答案。 让$R$成为对SR应用$s/A/B/g$的结果。 那么答案是SL$+B+R$。 这就说明: 如果在$S$中有两个重叠的A,那么只替换最左边的一个。例如,将$`s/aba/c/g`$应用于`abababa`会产生`cbc`:在替换第一个`aba `之后,字符串将变为`cbaba `,在此之后只能替换最后一个出现的` aba `。 如果没有替换就使用先前替换的结果。例如,将$`s/a/ab/g`$应用于`a`产生`ab`,将$`s/s/a/ba/g`$应用于`a`产生`ba`。 命令越长,传输它所需的时间就越长。因此,需要你编写一个程序,找到最短的命令,将初始字符串转换为最终字符串。

输入格式

第一行输入包含初始字符串和最终字符串。这两个字符串都不是空的,并且它们的长度不超过$2000$。字符串仅包含英文字母、空格和标点符号(逗号、冒号、分号和连字符:$',',':',';','-')。$给定的字符串不相同。

输出格式

输出将初始字符串转换为最终字符串并最短的替换命令。如果有多个最短的替换命令,请输出其中任何一个。 ## 样例 #1 ### 样例输入 #1 ``` move left, move right; move up move left, move down, move up ``` ### 样例输出 #1 ``` s/right;/down,/g ``` ## 样例 #2 ### 样例输入 #2 ``` If not found: move x; else move -x If found: move x; else move -x ``` ### 样例输出 #2 ``` s/ not//g ``` ## 样例 #3 ### 样例输入 #3 ``` abababa cbc ``` ### 样例输出 #3 ``` s/aba/c/g ```

说明/提示

时间限制: 2 s, 内存限制: 256 MB.