CF1231E.Middle-Out

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

本题灵感来源于《吹笛人》的故事。在 Hooli 的压缩竞争对手 Nucleus 发起挑战后,Richard 熬夜发明了一种新的压缩方法:middle-out。

给定两个长度相同的字符串 ss 和 tt,它们的字符从左到右编号为 11 到 nn(即从开头到结尾)。

每次操作你可以进行以下动作:

  • 选择任意一个合法的下标 ii(1≤i≤n1 \le i \le n),
  • 将 ss 的第 ii 个字符移动到字符串的开头,或者将 ss 的第 ii 个字符移动到字符串的结尾。

注意,这些操作不会改变字符串 ss 的长度。你只能对字符串 ss 进行操作。

例如,若 s=s= "test",一次操作后可以得到:

  • 如果 i=1i=1 并且移动到开头,结果为 "test"(字符串不变);
  • 如果 i=2i=2 并且移动到开头,结果为 "etst";
  • 如果 i=3i=3 并且移动到开头,结果为 "stet";
  • 如果 i=4i=4 并且移动到开头,结果为 "ttes";
  • 如果 i=1i=1 并且移动到结尾,结果为 "estt";
  • 如果 i=2i=2 并且移动到结尾,结果为 "tste";
  • 如果 i=3i=3 并且移动到结尾,结果为 "tets";
  • 如果 i=4i=4 并且移动到结尾,结果为 "test"(字符串不变)。

你希望通过最少的操作次数将字符串 ss 变为字符串 tt。如果无法将 ss 变为 tt,输出 −1-1。

输入格式

第一行包含一个整数 qq(1≤q≤1001 \le q \le 100),表示输入中独立测试用例的数量。

每个测试用例包含三行。第一行为一个整数 nn(1≤n≤1001 \le n \le 100),表示字符串 ss 和 tt 的长度。第二行为字符串 ss,第三行为字符串 tt。ss 和 tt 均为长度为 nn 的仅包含小写拉丁字母的字符串。

测试用例中 nn 的总和没有限制(即允许 q=100q=100 且所有 n=100n=100 的输入)。

输出格式

对于每个测试用例,输出将 ss 变为 tt 所需的最小操作次数。如果无法完成转换,输出 −1-1。

输入输出样例

  • 输入#1

    3
    9
    iredppipe
    piedpiper
    4
    estt
    test
    4
    tste
    test
    

    输出#1

    2
    1
    2
    
  • 输入#2

    4
    1
    a
    z
    5
    adhas
    dasha
    5
    aashd
    dasha
    5
    aahsd
    dasha
    

    输出#2

    -1
    2
    2
    3
    

说明/提示

在第一个示例中,一种最优操作方案如下:

  • 对于第一个测试用例 s=s= "iredppipe",t=t= "piedpiper": "iredppipe" →\rightarrow "iedppiper" →\rightarrow "piedpiper";
  • 对于第二个测试用例 s=s= "estt",t=t= "test": "estt" →\rightarrow "test";
  • 对于第三个测试用例 s=s= "tste",t=t= "test": "tste" →\rightarrow "etst" →\rightarrow "test"。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页