10476: Bomberman
Вася відкрив для себе класичну гру «Bomberman», дійовою особою якої є Бомбермен. Цей персонаж пересувається по ігровому полю, що є прямокутником з \(N\) рядків і \(M\) стовпців. Кожна клітина поля або вільна для проходу, або зайнята стіною. В одній із клітинок знаходиться бонус, до якого необхідно дістатися Бомбермену. Для цього він має рівно 3 бомби. За хід Бомбермен може зрушити до сусідньої клітини, якщо вона вільна, або підірвати стіну, розташовану в ній, використавши одну бомбу.
В останньому випадку клітина стає прохідною і згодом Бомбермен може стати на неї. Вася хоче визначити, за яку мінімальну кількість ходів Бомбермен зможе дістатися бонуса, або ж дізнатися, що це зробити неможливо, тоді Вася може спокійно видалити «Bomberman» - а й повернутися до старої доброї Дотки. Сусідними є клітини, що мають спільну сторону. Бомбермен не може виходити за межі поля.
Формат вхідних даних
У першому рядку містяться два числа \(N\) і \(M\) — кількість рядків і стовпців поля відповідно \(( 1 ≤ N , M ≤ 20 )\).
Кожен із наступних \(N\) рядків містить рівно \(M\) символів, що описують поле. Вільні клітини позначені символом "." (ASCII код 46), зайняті-символом "W" (ASCII код 87), бонус-символом "*" (ASCII код 42), Бомбермен-символом "B" (ASCII код 66). Гарантується, що на полі знаходиться один бонус.
Формат вихідних даних
Виведіть одне число—мінімальна кількість ходів, необхідна для того, щоб дістатися бонуса, або −1, якщо дістатися бонуса неможливо.
Пояснення
У першому прикладі необхідно підірвати стіну на другому рядку в першому стовпці і пройти Бомберменом вниз, а потім праворуч. У другому прикладі необхідно підірвати мінімум 4 стіни, щоб дістатися бонуса, тому відповідь −1.
Приклад вхідних даних
5 6
B.....
WWWWW.
......
.WWWWW
.....*
Приклад вихідних даних
10
Коментарі