printРабочее место участника

printЗадачи

908. Идеальный раскрой

Ограничения: время – 2s/4s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

В компании ACM (All Cutting Machine) была разработана программа для составления карт раскроя листов на прямоугольные части без отходов. Но оказалось, что не все карты раскроя могут быть применены практически, так как резательная машина может выполнять только операцию разрезания прямоугольной заготовки на два прямоугольника.
Напишите программу, которая проверяет выполнимость карты раскроя.
Во входном файле содержится до 10 карт раскроя для проверки. Каждая карта начинается со строки, содержащей два целых числа, разделенных пробелом – размеры листа `H` и `W` (`0\ <\ H\ ≤\ 20`, `0\ <\ W\ ≤\ 20`). Далее следует `H` строк по `W` символов – собственно карта раскроя, каждый символ соответствует квадрату единичного размера. Одинаковые буквы означают части одной прямоугольной детали; разные детали обозначены различными латинскими буквами. Регистр букв существенен. Ввод завершается строкой с 0 0, которая не обрабатывается.
В выходной файл для каждой карты раскроя вывести на соответствующей строке сообщение "YES" или "NO" в зависимости от ее применимости.

Пример ввода

3 3
ABB
ACD
EED
2 4
AAAB
CCDD
0 0

Вывод для примера

NO
YES
loading