start, а нужно получить goal. Есть набор шагов steps. Пока текущее число x лежит в диапазоне от 0 до 1000 включительно, за один ход можно взять любой шаг s из steps и заменить x на одно из:
- x + s;
- x - s;
- x XOR s (побитовое исключающее ИЛИ).
Шаги можно использовать сколько угодно раз и в любом порядке. Ход, который выводит число за пределы 0..1000, разрешён, но после него счётчик замирает и ходить дальше нельзя.
Верните наименьшее число ходов, за которое из start получается goal, или -1, если это невозможно.steps=[3, 6], start=1, goal=10 → 2
1 + 3 = 4, затем 4 + 6 = 10. За один ход до 10 не дойти.
steps=[4], start=0, goal=2 → -1
Любой ход с шагом 4 оставляет число кратным 4, поэтому 2 недостижимо.
steps=[400], start=300, goal=1100 → 2
300 → 700 → 1100. Число 1100 уже вне диапазона 0..1000, но это и есть цель, так что всё в порядке.
steps=[3, 6], start=1, goal=10
2
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 133 теста на сервере, включая скрытые.