CF1383A String Transformation 1

题目描述

请注意,String Transformation 1 和 String Transformation 2 的唯一区别在于 Koa 所做的操作。在本题中,Koa 选择的字母 $y$ 必须在字母表中严格大于 $x$(请阅读题目以更好理解)。你可以独立地对这些问题进行 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$),使得这些位置上的字母都等于某个字母 $x$(即 $A_{p_1} = A_{p_2} = \ldots = A_{p_k} = x$)。 2. 选择一个字母 $y$(从前 $20$ 个小写英文字母中选),要求 $y > x$(即 $y$ 在字母表中严格大于 $x$)。 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 无法将字符串 $A$ 变为 $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 翻译