Ctrl K

Повороты кодового замка

Средняя
У кодового замка четыре колеса, на каждом цифры от 0 до 9 по кругу: после 9 идёт 0, и наоборот. Один ход — повернуть одно колесо на одну цифру вперёд или назад. Сейчас замок показывает "0000". В списке jams перечислены комбинации, на которых замок заклинивает: если он покажет любую из них, колёса больше не провернуть. Верните наименьшее число ходов, за которое можно набрать комбинацию code, ни разу не попав на заклинивающую. Если это невозможно, верните -1.
Пример 1
jams=["0010", "0090"], code="0011" → 2

Третье колесо сразу крутить нельзя: и 0010, и 0090 заклинивают замок. Сначала поворачиваем четвёртое: 0000 → 0001, затем третье: 0001 → 0011. Два поворота.

Пример 2
jams=["5555"], code="9000" → 1

Первое колесо поворачивается назад: 0 → 9 за один ход.

Пример 3
jams=["0001", "0009", "0010", "0090", "0100", "0900", "1000", "9000"], code="1234" → -1

Все восемь соседних с 0000 положений заклинивают замок, сдвинуться нельзя.

Ограничения
  • 0 ≤ len(jams) ≤ 500
  • Каждая строка в jams и code — ровно 4 цифры
  • code нет в jams
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСклеить карточки контактов СредняяЦепочки синонимов СредняяПерестановки по связям СредняяНаименьшая общая территория СредняяРаскрыть шаблон с переменными Средняя
загружаем Python…
Вход
jams=["0010", "0090"], code="0011"
Ожидается
2

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