Складання рамок#3220

Складання рамок

1 секунда
64 мегабайти
Складна

Розгляньте наступні рамок для картин, розміщених на 9 \times 8 масиві.

Тепер розмістіть їх одну на одну, починаючи з внизу і закінчуючи зверху. Якщо якась частина рамки покриває іншу, вона приховує цю частину нижньої рамки.

Переглядаючи стопку з рамок, ми бачимо наступне.

В якому порядку рамки складені знизу вгору? Відповідь — EDABC.

Ваше завдання — визначити порядок, в якому рамки складені знизу вгору, маючи зображення складених рамок. Ось правила:

  1. Ширина рамки завжди точно символ, а сторони ніколи не коротші за символи.

  2. Можливо побачити принаймні одну частину кожної з чотирьох сторін рамки. Кут показує дві сторони.

  3. Рамки будуть позначені великими літерами, і жодні дві рамки не будуть мати однакову літеру.

Вхідні дані

Кожен блок введення містить висоту, (h \le 30) на першому рядку і ширину (w \le 30) на другому. Зображення складених рамок потім надається у вигляді рядків з символами кожен.

Вихідні дані

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

Приклади

Приклад 1

Loading
Loading