#P13425. [COCI 2020/2021 #1] Bajka

    ID: 13235 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>字符串动态规划 DP2020深度优先搜索 DFS记忆化搜索COCI(克罗地亚)

[COCI 2020/2021 #1] Bajka

Description

小 Fabijan 看腻了图画书,于是他决定读他的第一本童话故事。不幸的是,Fabijan 经常遇到一个让他害怕的单词。为了克服恐惧,他发明了一个小游戏。

这个可怕的单词可以表示为一个长度为 nn 的小写字母数组。游戏开始时,Fabijan 将手指放在数组的某个位置,并把该位置的字母写在纸上。随后,他可以任意次数地执行以下两种操作中的一种:

  • 他可以将手指移动到当前左边或右边相邻的位置(如果该位置存在),并把新位置上的字母写在纸上,写在最后一个字母之后。
  • 他可以将手指移动到任意一个与当前位置字母相同的位置。在这种情况下,Fabijan 不会在纸上写任何字母。

从位置 xx 移动到位置 yy 需要 xy|x-y| 秒。

如果游戏结束时,纸上写下了他最喜欢的单词,那么 Fabijan 就能克服对这个单词的恐惧。他希望尽快完成童话故事,因此请你告诉他,最少需要多少秒才能在纸上写下他最喜欢的单词。

Input Format

第一行输入两个整数 nnmm1n,m3001 \leq n, m \leq 300)。

第二行输入一个长度为 nn 的小写字母串,表示让 Fabijan 害怕的单词。

第三行输入一个长度为 mm 的小写字母串,表示 Fabijan 最喜欢的单词。

Output Format

输出 Fabijan 最快能在纸上写下他最喜欢的单词所需的最短时间(秒数)。如果无法完成,输出 1-1

2 2
wa
ac
-1
7 7
monolog
nogolom
10
14 5
niskoobrazovan
boook
5

Hint

第三个样例说明:

Fabijan 首先将手指放在第 77 个位置,并写下字母 'b'。接着,他向左移动两次,每次都写下字母 'o'。下一步,他用第二种操作将手指移动到第 66 个位置。最后,他再向左移动两次,分别写下字母 'o' 和 'k'。总共用了 55 秒,每次移动耗时 11 秒。

评分

在价值 2020 分的测试数据中,让 Fabijan 害怕的单词中的字母两两不同。

翻译由 ChatGPT-4.1 完成。