Codeforces Round 585 (Div. 2) |
---|
Закончено |
У Монокарпа есть две строки $$$s$$$ и $$$t$$$ одинаковой длины, состоящие из латинских букв «a» и «b».
Монокарп хочет сделать строки $$$s$$$ и $$$t$$$ одинаковыми. Для этого он может выполнять следующие операции: выбрать в строке $$$s$$$ позицию $$$pos_1$$$, выбрать в строке $$$t$$$ позицию $$$pos_2$$$ и поменять местами буквы $$$s_{pos_1}$$$ и $$$t_{pos_2}$$$.
Перед вами стоит задача определить минимальное количество операций, которые должен сделать Монокарп, чтобы сделать строки $$$s$$$ и $$$t$$$ одинаковыми, а также вывести сами операции. Если невозможно сделать строки одинаковыми, сообщите об этом.
В первой строке следует целое число $$$n$$$ $$$(1 \le n \le 2 \cdot 10^{5})$$$ — длина строк $$$s$$$ и $$$t$$$.
Во второй строке следует строка $$$s$$$ длины $$$n$$$, состоящая из латинских букв «a» и «b».
В третьей строке следует строка $$$t$$$ длины $$$n$$$, состоящая из латинских букв «a» и «b».
Если невозможно сделать строки одинаковыми, выведите $$$-1$$$.
В противном случае, в первую строку выведите целое число $$$k$$$ — минимальное количество операций, которые нужно сделать, чтобы сделать строки одинаковыми. В каждой из следующих $$$k$$$ строк выведите по два целых числа — позицию в строке $$$s$$$ и позицию в строке $$$t$$$, которые нужно использовать для обмена букв во время очередной операции.
4 abab aabb
2 3 3 3 2
1 a b
-1
8 babbaabb abababaa
3 2 6 1 3 7 8
В первом примере достаточно двух операций обмена. Например, можно сначала поменять местами третью букву в строке $$$s$$$ с третьей буквой в строке $$$t$$$. После этого $$$s = $$$ «abbb», $$$t = $$$ «aaab». Затем нужно поменять третью букву в строке $$$s$$$ со второй буквой в строке $$$t$$$. После этого обе строки $$$s$$$ и $$$t$$$ будут равны «abab».
Во втором примере невозможно сделать строки одинаковыми.
Название |
---|