10862. Обмін королів
У Шаховій Країні завжди користувалися популярністю різні спортивні змагання: ферзебол, рокировочна боротьба, ендшпильові біги. Але найбільшої популярності цього року набула спортивна гра «обмін королів».
Суть її полягає у наступному. Двох королів (білого та чорного) ставлять на прямокутне шахове поле, деякі клітини якого відзначені як недосяжні. За правилами гри королі роблять ходи по черзі (спочатку білий, а потім чорний), не наступаючи на недосяжні клітини. Гра вважається успішно закінченою, якщо чорний та білий королі помінялися місцями. У змаганні перемагає та пара королів, яка змогла помінятись місцями за мінімальну кількість ходів.
Нагадаємо, що в шахах король має право переміститися зі своєї клітини в будь-яку з 8 сусідніх по вертикалі, діагоналі чи горизонталі, за умови, що вона не є сусідньою для іншого короля.
Напишіть програму, яка за інформацією про дошку знайде мінімальну кількість ходів, потрібну для успішного закінчення гри.
Формат вхідних даних
У першому рядку вхідних даних дано цілі числа \(N\) і \(M\) (\(1 ≤ N, M ≤ 8\)) — розміри дошки по вертикалі та горизонталі, відповідно.
У наступних \(N\) рядках дано \(M\) символів - стан дошки на початку гри. Символ «.» позначає порожню клітину, символ "*" - недосяжну клітину, символ "W" - білого короля, "B" - чорного короля. Гарантується, що символи W і B зустрічаються на полі рівно по одному разу, і королі не знаходяться в сусідніх клітинах спочатку.
Формат вихідних даних
У вихідний потік необхідно вивести мінімальну кількість ходів, яка буде потрібна для того, щоб білий король помінявся місцями з чорним. Якщо поміняти королів місцями неможливо, потрібно вивести «Impossible» без лапок.
Приклад вхідних даних
4 3
*.*
W.B
...
*.*
Приклад вихідних даних
8
Приклад вхідних даних
2 3
W..
..B
Приклад вихідних даних
Impossible
Коментарі