Ctrl K

Перевернуть плитки ради ровного ряда

Средняя
На столе в ряд лежат плитки, на каждой две половинки с числами от 1 до 6. У i-й плитки верхняя половинка — upper[i], нижняя — lower[i]. Любую плитку можно перевернуть: тогда её верхнее и нижнее числа меняются местами. Нужно, чтобы все числа в верхнем ряду стали одинаковыми, или все числа в нижнем ряду стали одинаковыми. Верните наименьшее число переворотов, которого для этого хватит, или -1, если это невозможно.
Пример 1
upper=[4, 1, 4, 4], lower=[2, 4, 3, 1] → 1

Перевернём вторую плитку — в верхнем ряду окажутся одни четвёрки.

Пример 2
upper=[2, 6, 2], lower=[6, 2, 6] → 1

Перевернём вторую плитку: сверху будут одни двойки, а снизу одни шестёрки. Хватает одного переворота.

Пример 3
upper=[1, 2, 3], lower=[3, 1, 2] → -1

Нет числа, которое было бы на каждой плитке, поэтому ответ -1.

Ограничения
  • 2 ≤ len(upper) ≤ 2·10⁴
  • len(lower) = len(upper)
  • 1 ≤ upper[i], lower[i] ≤ 6
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДве доски и вода СредняяМеньше всего прыжков до конца СредняяДобраться до последней клетки СредняяСколько угодно сделок СредняяОткуда начать круг Средняя
загружаем Python…
Вход
upper=[4, 1, 4, 4], lower=[2, 4, 3, 1]
Ожидается
1

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