11186: 写字
[Creator : ]
Description
下面将给出你两个字符串,一个为模板串 $S$,一个为目标串 $T$ 初始时,你拥有一个空串,你可以选择 $S$ 中任意一个位置 $x$,将 $S[x]$ 写下,并随后执行下列两种操作:
- 移动到当前位置的左侧/右侧 (如果这个位置存在),并将新位置对应的字符写下,花费 $1$ 秒。
- 移动到 $S$ 中一个与当前位置 $x$ 字母相同的任意位置 $y\ (x≠y)$,花费 $|x−y|$ 秒,不会写下任何东西。
Input
第一行两个正整数 $n,m$,分别代表 $S$ 和 $T$ 的长度
第二行为 $n$ 个小写字母,表示 $S$
第三行为 $m$ 个小写字母,表示 $T$
第二行为 $n$ 个小写字母,表示 $S$
第三行为 $m$ 个小写字母,表示 $T$
Output
一个整数,表示写出 $T$ 的最短时间。特别的,如不能写出 $T$ 则输出 $−1$。
Constraints
对于前 $20\%$ 的数据,满足 $n,m≤5$
对于另外 $30\%$ 的数据,满足 $S$ 中字母互不相同
对于 $100\%$ 的数据,满足 $n,m≤300$
对于另外 $30\%$ 的数据,满足 $S$ 中字母互不相同
对于 $100\%$ 的数据,满足 $n,m≤300$
Sample 1 Input
14 5
niskoobrazovan
boook
Sample 1 Output
5
初始时可以选择 $x=7$,写下
b
,接下来用 操作1 连续往左移动两次,写下 o
,然后 操作2 移动到位置 $6$,不写下字母,随后 操作1 移动到位置 $5$,写下 $o$,操作1 移动到位置 $4$,写下 k
,组成 boook
。 Sample 2 Input
2 2
wa
ac
Sample 2 Output
-1