Ctrl K

Обмены букв x и y

Средняя
Даны две строки top и bottom одинаковой длины из букв x и y. Нужно сделать их одинаковыми. За один ход можно взять любой символ из top и любой символ из bottom и поменять их местами: top[i] ↔ bottom[j], где i и j могут быть разными. Менять местами два символа внутри одной строки нельзя. Верните наименьшее число ходов, после которых строки совпадут, или -1, если это невозможно.
Пример 1
top="xy", bottom="yx" → 2

Два несовпадения разного вида. Сначала меняем top[0] и bottom[0]: строки становятся "yy" и "xx". Затем меняем top[0] и bottom[1] — обе строки равны "xy". Итого два обмена.

Пример 2
top="xxyx", bottom="yyyx" → 1

Несовпадают позиции 0 и 1, обе вида x над y. Один обмен top[0] и bottom[1] делает обе строки равными "yxyx".

Пример 3
top="xy", bottom="xx" → -1

Всего букв x три — нечётное число, поровну между строками их не разделить.

Ограничения
  • 1 ≤ len(top) ≤ 1000
  • len(top) = len(bottom)
  • Строки состоят только из букв x и y
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиОкруглить цены до нужной суммы СредняяСчастливый билет с пропусками СредняяДуэль за зажатые фишки СредняяСтереть цифры до кратного 25 СредняяСамый большой нечётный кусок Лёгкая
загружаем Python…
Вход
top="xy", bottom="yx"
Ожидается
2

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 106 тестов на сервере, включая скрытые.