"Мінімізація поворотів"#6085

"Мінімізація поворотів"

2 секунди
64 мегабайти
Легка

Розглянемо лабіринт у вигляді прямокутної сітки з нулів і одиниць, де 0 позначає вільну комірку, а 1 — стіну.

Спочатку робот знаходиться у комірці з координатами (i_0, j_0) . Робот має вийти з лабіринту (досягти будь-якої вільної комірки на зовнішньому краю). Він може рухатись у будь-яку суміжну по вертикалі чи горизонталі (не по діагоналі) вільну комірку. Робот може швидко долати послідовність вільних комірок в одному напрямку, але кожна зміна напрямку (поворот) потребує значного часу.

Ваша задача — визначити мінімальну кількість поворотів, необхідних для виходу робота з лабіринту. Якщо вихід неможливий, виведіть –1.

Вхідні дані

Перший рядок містить два цілі числа , (5 \leq N,\ M \leq 640) — висота та ширина лабіринту. Кожен з наступних рядків містить рівно символів (0 або 1) без роздільників, що позначають стіни та вільні комірки. Останній рядок містить два цілих числа i_0, j_0 (2 \leq i_0 \leq N-1, 2 \leq j_0 \leq M-1) — початкові координати робота. Гарантується, що ці координати відповідають вільній комірці, але шлях до межі може бути відсутнім.

Вихідні дані

Виведіть одне число — мінімальну кількість змін напрямку (поворотів), потрібних для того, щоб робот досягнув межі лабіринту. Якщо виходу немає, виведіть –1 (без лапок).

Приклади

Приклад 1

Loading
Loading