CF1015B Obtaining the String
题目描述
给定两个字符串 $s$ 和 $t$,长度均为 $n$,且只包含小写拉丁字母。字符串中的字符编号从 $1$ 到 $n$。
你可以对字符串 $s$ 进行如下操作任意次(也可以不进行操作):
- 交换 $s$ 中任意两个相邻(即相邻位置)的字符(即对于任意 $i = 1, 2, \dots, n-1$,可以交换 $s_i$ 和 $s_{i+1}$)。
你不能对字符串 $t$ 进行任何操作。所有操作都只作用于字符串 $s$,且操作可以连续进行。
你的任务是将字符串 $s$ 变换为字符串 $t$。请找出一种不超过 $10^4$ 次操作的方案。
你不需要使操作次数最少,只需找到任意一种操作序列,且操作次数不超过 $10^4$,即可将 $s$ 变换为 $t$。
输入格式
第一行输入一个整数 $n$($1 \le n \le 50$),表示字符串 $s$ 和 $t$ 的长度。
第二行输入字符串 $s$,长度为 $n$,只包含小写拉丁字母。
第三行输入字符串 $t$,长度为 $n$,只包含小写拉丁字母。
输出格式
如果无法通过操作将 $s$ 变换为 $t$,输出 $-1$。
否则,第一行输出一个整数 $k$,表示将 $s$ 变换为 $t$ 所需的操作次数。$k$ 必须满足 $0 \le k \le 10^4$。
第二行输出 $k$ 个整数 $c_j$($1 \le c_j < n$),其中 $c_j$ 表示第 $j$ 次操作时交换 $s_{c_j}$ 和 $s_{c_j+1}$。
如果不需要进行任何操作,第一行输出 $0$,第二行可以留空或不输出。
说明/提示
在第一个样例中,字符串 $s$ 的变化过程如下:"abcdef" $\rightarrow$ "abdcef" $\rightarrow$ "abdcfe" $\rightarrow$ "abdfce" $\rightarrow$ "abdfec"。
在第二个样例中,无法通过允许的操作将 $s$ 变换为 $t$。
由 ChatGPT 4.1 翻译