Трансформация строк
Трансформация строк
Имеются две строки u и v, состоящие из букв a и b. Наша цель - преобразовать строку uв v используя следующую операцию обмена: разрешается выбрать два непересекающихся фрагмента ab и ba в первой строке и поменять их местами. Можно ли u преобразовать в v используя некоторую последовательность операций обмена?
Входные данные
Первая строка содержит одно число n (2 ≤ n ≤ 106
) - длину строк. Далее следуют две строки, каждая из которых состоит из n букв a и/или b. Первая строка описывает u, вторая строка описывает v. Считайте, что строки разные.
Выходные данные
В первой строке выведите слово TAK (польское да) или NIE (польское нет) если u можно преобразовать в v используя операции обмена.
Если ответ положительный и n ≤ 4000, программа должна вывести пример последовательности операций обменов. В первой строке вывести количество операций m (1 ≤ m ≤ 106
). Каждая из следующих m строк содержит два целых числа ai
, bi
(1 ≤ ai
, bi
≤ n - 1) - позиции начальных букв фрагментов, которые обмениваются: ai
указывает на позицию ab, bi
указывает на позицию ba.
Если существует несколько решений, выведите любое из них. В частности, Вам не следует минимизировать количество операций, то есть число m.
6 aabbaa baaaab
TAK 2 2 4 1 5
6 aaabbb ababab
NIE