CF1215C Swap Letters

题目描述

``Monocarp``有两个长度相等的,里面只有字母``a``和``b``的字符串$s,t$。 ``Monocarp``想要使这两个字符串相等。他可以执行以下操作任意次:指定两个下标$pos1,pos2$,交换$s_{pos1}$和$t_{pos2}$。 你需要确定``Monocarp``使这两个串变得相等所需要的最小操作次数,并且输出任意一个这样的步数最少的操作序列。或者说这两个串不可能变得相等。

输入格式

第一行是一个整数$n(1\le n\le 2*10^5)$表示$s,t$的长度。 第二行一个只包含字母``a,b``的长度为$n$的字符串$s$。 第三行一个只包含字母``a,b``的长度为$n$的字符串$t$。

输出格式

如果不可能使这两个串相等,输出``-1``。 否则,第一行输出最小操作步数$k$,然后再输出$k$行,每行两个整数,表示你在这一次进行操作时所指定的$pos1$和$pos2$。

说明/提示

在第一个样例中,你可以交换$s$的第三个字母,在交换$t$的第三个字母。于是$s$变为``abbb``,$t$变为``aaab``。再交换$s$的第三个字母和$t$的第二个字母即可达成目标,使得$s,t$都变成``abab``。 第二个样例中,显然不论怎么交换$s,t$都不可能相等。