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 翻译