Олимпиадный тренинг

Задача . B. Эквивалентные строки


Сегодня на спецкурсе «Строки» Геральд узнал новое определение эквивалентности строк. Две строки a и b равной длины называются эквивалентными в одном из двух случаев:

  1. Они равны.
  2. Если разделить строку a на две одинаковые по длине половины a1 и a2, а строку b — на две одинаковые по длине половины b1 и b2, то окажется, что верно одно из двух:
    1. a1 эквивалентно b1, а a2 эквивалентно b2
    2. a1 эквивалентно b2, а a2 эквивалентно b1

В качестве домашнего задания преподаватель выдал ученикам две строки и попросил определить, эквиваленты ли они.

Геральд уже сделал это домашнее задание. Сделайте и вы!

Входные данные

В первых двух строках входных данных даны две строки, которые выдал преподаватель. Каждая из них имеет длину от 1 до 200 000 и состоит из строчных букв английского алфавита. Строки имеют одинаковую длину.

Выходные данные

Выведите «YES» (без кавычек), если эти две строки эквивалентны, и «NO» (без кавычек) в противном случае.

Примечание

В первом примере первую строку можно разделить на строки "aa" и "ba", вторую – на строки "ab" и "aa". "aa" эквивалентно "aa"; "ab" эквивалентно "ba", так как "ab" = "a" + "b", "ba" = "b" + "a".

Во втором примере первую строку можно разделить на строки "aa" и "bb", которые эквивалентны только сами себе. Поэтому строка "aabb" эквивалентна только сама себе и строке "bbaa".


Примеры
Входные данныеВыходные данные
1 aaba
abaa
YES
2 aabb
abab
NO

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w644
Комментарий учителя