CF1383C String Transformation 2
题目描述
请注意,String Transformation 1 和 String Transformation 2 的唯一区别在于 Koa 所做的操作。在本题中,Koa 选择的字母 $y$ 可以是前 $20$ 个小写英文字母中的任意一个(请阅读题面以获得更好的理解)。你可以分别对这些题目进行 hack。
考拉 Koa 有两个长度相同的字符串 $A$ 和 $B$($|A|=|B|=n$),它们均由前 $20$ 个小写英文字母(即 a 到 t)组成。
每次操作,Koa 可以:
1. 选择 $A$ 中若干个位置 $p_1, p_2, \ldots, p_k$($k \ge 1$,$1 \le p_i \le n$,若 $i \neq j$,则 $p_i \neq p_j$),使得这些位置上的字母都相同,即 $A_{p_1} = A_{p_2} = \ldots = A_{p_k} = x$(即这些位置上的字母都是某个字母 $x$)。
2. 选择任意一个字母 $y$(从前 $20$ 个小写英文字母中选择)。
3. 将上述所有位置的字母都改为 $y$。更正式地说,对于每个 $i$($1 \le i \le k$),Koa 令 $A_{p_i} = y$。注意,你只能修改字符串 $A$。
Koa 想知道,她最少需要多少次操作才能使两个字符串相等(即 $A = B$),或者判断是否无法通过上述操作使它们相等。请你帮助她!
输入格式
每个测试点包含多组测试数据。第一行包含一个整数 $t$($1 \le t \le 10$),表示测试数据组数。接下来是每组测试数据的描述。
每组测试数据的第一行包含一个整数 $n$($1 \le n \le 10^5$),表示字符串 $A$ 和 $B$ 的长度。
第二行包含字符串 $A$($|A|=n$)。
第三行包含字符串 $B$($|B|=n$)。
两个字符串均由前 $20$ 个小写英文字母(即 a 到 t)组成。
保证所有测试数据中 $n$ 的总和不超过 $10^5$。
输出格式
对于每组测试数据:
输出一行,表示使两个字符串相等所需的最小操作次数($A = B$),如果无法通过上述操作使它们相等,则输出 $-1$。
说明/提示
- 在第 $1$ 组测试数据中,Koa:
1. 选择第 $1$ 和第 $2$ 个位置,将 $A_1 = A_2 = b$($\color{red}{aa}b \rightarrow \color{blue}{bb}b$)。
2. 选择第 $2$ 和第 $3$ 个位置,将 $A_2 = A_3 = c$($b\color{red}{bb} \rightarrow b\color{blue}{cc}$)。
- 在第 $2$ 组测试数据中,Koa:
1. 选择第 $1$ 和第 $4$ 个位置,将 $A_1 = A_4 = a$($\color{red}{c}ab\color{red}{c} \rightarrow \color{blue}{a}ab\color{blue}{a}$)。
2. 选择第 $2$ 和第 $4$ 个位置,将 $A_2 = A_4 = b$($a\color{red}{a}b\color{red}{a} \rightarrow a\color{blue}{b}b\color{blue}{b}$)。
3. 选择第 $3$ 个位置,将 $A_3 = c$($ab\color{red}{b}b \rightarrow ab\color{blue}{c}b$)。
- 在第 $3$ 组测试数据中,Koa:
1. 选择第 $1$ 个位置,将 $A_1 = t$($\color{red}{a}bc \rightarrow \color{blue}{t}bc$)。
2. 选择第 $2$ 个位置,将 $A_2 = s$($t\color{red}{b}c \rightarrow t\color{blue}{s}c$)。
3. 选择第 $3$ 个位置,将 $A_3 = r$($ts\color{red}{c} \rightarrow ts\color{blue}{r}$)。
由 ChatGPT 4.1 翻译