10862. Обмін королів


Відправити розв'язок

Бали: 100
Time limit: 1.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

У Шаховій Країні завжди користувалися популярністю різні спортивні змагання: ферзебол, рокировочна боротьба, ендшпильові біги. Але найбільшої популярності цього року набула спортивна гра «обмін королів».

Суть її полягає у наступному. Двох королів (білого та чорного) ставлять на прямокутне шахове поле, деякі клітини якого відзначені як недосяжні. За правилами гри королі роблять ходи по черзі (спочатку білий, а потім чорний), не наступаючи на недосяжні клітини. Гра вважається успішно закінченою, якщо чорний та білий королі помінялися місцями. У змаганні перемагає та пара королів, яка змогла помінятись місцями за мінімальну кількість ходів.

Нагадаємо, що в шахах король має право переміститися зі своєї клітини в будь-яку з 8 сусідніх по вертикалі, діагоналі чи горизонталі, за умови, що вона не є сусідньою для іншого короля.

Напишіть програму, яка за інформацією про дошку знайде мінімальну кількість ходів, потрібну для успішного закінчення гри.

Формат вхідних даних

У першому рядку вхідних даних дано цілі числа \(N\) і \(M\) (\(1 ≤ N, M ≤ 8\)) — розміри дошки по вертикалі та горизонталі, відповідно.

У наступних \(N\) рядках дано \(M\) символів - стан дошки на початку гри. Символ «.» позначає порожню клітину, символ "*" - недосяжну клітину, символ "W" - білого короля, "B" - чорного короля. Гарантується, що символи W і B зустрічаються на полі рівно по одному разу, і королі не знаходяться в сусідніх клітинах спочатку.

Формат вихідних даних

У вихідний потік необхідно вивести мінімальну кількість ходів, яка буде потрібна для того, щоб білий король помінявся місцями з чорним. Якщо поміняти королів місцями неможливо, потрібно вивести «Impossible» без лапок.

Приклад вхідних даних

4 3
*.*
W.B
...
*.*

Приклад вихідних даних

8

Приклад вхідних даних

2 3
W..
..B

Приклад вихідних даних

Impossible

Коментарі

Ще немає коментарів.