CF1383A.String Transformation 1

传统题 时间 2000 ms 内存 256 MiB 9 尝试 3 已通过 1 标签

String Transformation 1

题目描述

请注意,String Transformation 1 和 String Transformation 2 的唯一区别在于 Koa 所做的操作。在本题中,Koa 选择的字母 yy 必须在字母表中严格大于 xx(请阅读题目以更好理解)。你可以独立地对这些问题进行 hack。

考拉 Koa 有两个长度相同的字符串 AABBA=B=n|A|=|B|=n),它们都只包含前 2020 个小写英文字母(即从 a 到 t)。

每次操作,Koa 可以:

  1. 选择 AA 中若干个位置 p1,p2,,pkp_1, p_2, \ldots, p_kk1k \ge 11pin1 \le p_i \le n,若 iji \neq jpipjp_i \neq p_j),使得这些位置上的字母都等于某个字母 xx(即 Ap1=Ap2==Apk=xA_{p_1} = A_{p_2} = \ldots = A_{p_k} = x)。
  2. 选择一个字母 yy(从前 2020 个小写英文字母中选),要求 y>xy > x(即 yy 在字母表中严格大于 xx)。
  3. 将上述所有位置的字母都改为 yy。更正式地说:对于每个 ii1ik1 \le i \le k),Koa 令 Api=yA_{p_i} = y。注意,你只能修改字符串 AA 中的字母。

Koa 想知道,她最少需要多少次操作才能使两个字符串相等(A=BA = B),或者判断是否无法使它们相等。请你帮助她!

输入格式

每个测试包含多个测试用例。第一行包含一个整数 tt1t101 \le t \le 10),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn1n1051 \le n \le 10^5),表示字符串 AABB 的长度。

第二行包含字符串 AAA=n|A|=n)。

第三行包含字符串 BBB=n|B|=n)。

两个字符串都只包含前 2020 个小写英文字母(即从 a 到 t)。

保证所有测试用例中 nn 的总和不超过 10510^5

输出格式

对于每个测试用例:

输出一行,表示使两个字符串相等所需的最小操作次数(A=BA = B),如果无法使它们相等则输出 1-1

说明/提示

  • 在第 11 个测试用例中,Koa:
    1. 选择第 11 和第 22 个位置,将 A1=A2=A_1 = A_2 = b(aabbbb\color{red}{aa}b \rightarrow \color{blue}{bb}b)。
    2. 选择第 22 和第 33 个位置,将 A2=A3=A_2 = A_3 = c(bbbbccb\color{red}{bb} \rightarrow b\color{blue}{cc})。
  • 在第 22 个测试用例中,Koa 无法将字符串 AA 变为 BB
  • 在第 33 个测试用例中,Koa:
    1. 选择第 11 个位置,将 A1=A_1 = t(abctbc\color{red}{a}bc \rightarrow \color{blue}{t}bc)。
    2. 选择第 22 个位置,将 A2=A_2 = s(tbctsct\color{red}{b}c \rightarrow t\color{blue}{s}c)。
    3. 选择第 33 个位置,将 A3=A_3 = r(tsctsrts\color{red}{c} \rightarrow ts\color{blue}{r})。

由 ChatGPT 4.1 翻译

样例

5
3
aab
bcc
4
cabc
abcb
3
abc
tsr
4
aabd
cccd
5
abcbd
bcdda
2
-1
3
2
-1

在线编程 IDE

建议全屏模式获得最佳体验