6329: 字符串

Memory Limit:256 MB Time Limit:1.000 S
Judge Style:Special Judge Creator:
Submit:38 Solved:4

Description

给出两个长度均为n的字符串S和T。
字符串由小写英文字母组成,字符编号为1到n。
你可以连续执行以下操作任何多次:
调换S的任何两个相邻(邻近)字符 (即对于任何i={1,2,...,n-1},你可以交换 Si 和Si+1)。但不对字符串T做交换操作。
你的任务是用以上操作将字符串S变成字符串T。请找出任何一种方法来做到这一点,你最多可以操作104次。
也就是说,你不需要最小化交换的次数,只要找到任何长度为104或更少的移动序列来将S转化为T。

Input

第一行,一个整数n (1 ≤ n ≤ 50),表示字符串S和T的长度。
第二行,字符串S,由n个小写字母组成。
第三行,字符串T,由n个小写字母组成。

Output

如果不可能通过操作获得字符串T,则输出"-1"。
否则在第一行输出一个整数k,表示操作次数,注意:k 必须是一个在0..104范围内的整数。
第二行输出k个整数cj (1 ≤ cj < n ),cj 表示在第j步时,你交换了字符scj 和scj+1 。
如果你不需要做任何移动,在第一行输出一个整数0,第二行留空或根本不输出。

Sample Input Copy

输入1 
6
abcdef
abdfec
输入2 
4
abcd
accd

Sample Output Copy

输出1 
4
3 5 4 5
输出2 
-1

HINT

【样例解释】
在第一个例子中,字符串S 变化如下:"abcdef" → "abdcef" → "abdcfe" → "abdfce" → "abdfec"。
在第二个例子中,没有将字符串S 变成字符串T 的方法。
【数据规模】

测试点

规模

满足性质

1-2

≤ 26

进行1次交换就能达成目标

3-4

字符串中的字母各不相同

5-25

≤ 50