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