Codenames
Правила этой игры могут незначительно отличаться от официальных.
Карен и ее друзья соревнуются в чемпионате по настольным играм с высокими ставками, играя в популярную игру Codenames. Codenames - это игра с двумя противоборствующими командами: красной и синей. Карен - член красной команды.
Игра ведется на доске размером 5 * 5, где каждой из 25 ячеек (тайно) назначен один вид из четырех. На доске фиксированное количество ячеек каждого вида:
9 красных клеток (r);
8 синих клеток (b);
7 нейтральных клеток (n);
1 клетка убийца (x).
Истинные виды ячеек известны только одному игроку каждой команды (так называемому “шпиону“). Остальные игроки изначально видят только сетку 5 * 5 с полностью закрытыми ячейками. Ячейки будут открываться по мере прохождения игры. Каждая закрытая ячейка содержит имя объекта (которое, как оказалось, не имеет отношения к этой задаче).
К счастью, Карен - шпион в своей команде, поэтому она знает истинную конфигурацию доски. Ее обязанность - помочь своим товарищам по команде обнаружить красные клетки, удерживая их подальше от всех других клеток (особенно клетки убийцы). Она может сделать это, объявив подсказку, состоящую из:
допустимого слова w (из словаря n слов);
положительного числа g (количество догадок, которые должны сделать их товарищи по команде).
После этого ее товарищи по команде попытаются угадать как можно больше красных клеток, учитывая подсказку. Они начинают с первого предположения и обнаруживают одну из ячеек. Если обнаруженная ячейка красная, они могут продолжить процесс угадывания; в противном случае их ход останавливается, и ходить начинает другая команда. Команда выигрывает игру, если раскрываются все ячейки соответствующего цвета, или если другая команда открыла ячейку убийца.
Чтобы проиллюстрировать это, давайте рассмотрим состояние игры ниже (соответствующее примеру). На левом изображении показано, как Карен видит доску. На среднем рисунке показано, как ее товарищи по команде видят доску. Обратите внимание, что некоторые из ячеек закрыты для товарищей по команде Карен, и только Карен знает их настоящие виды. Значение правильного изображения будет объяснено позже в условии.
Первоначально цель Карен заключалась в том, чтобы давать подсказки, относящиеся к названиям объектов в некоторых красных ячейках, чтобы товарищи по команде знали, что нужно открывать только эти ячейки. Однако вскоре она поняла, что игра идет не очень хорошо, и что синяя команда может обыграть их на следующем ходе. К счастью, она и ее друзья разработали секретную “схему экстренного мошенничества“ специально для этих ситуаций.
Они начинают с присвоения буквы каждой из 25 ячеек в порядке возрастания строк (как показано выше на правом рисунке). Затем, когда Карен произносит слово w и число g, ее товарищи по команде будут делать следующее:
Просмотрят каждую из букв
w[i]
слова w по порядку;Если
w[i]
не присвоена ни одной ячейке или указанная ячейкаw[i]
уже обнаружена, то ничего не делать; в противном случае угадать ячейку, соответствующуюw[i]
.
Товарищи по команде повторяют эту процедуру до тех пор, пока не откроют все правильные ячейки, или сделают ошибку (покажут не красную ячейку), или они уже сделали все g догадок или все буквы w уже обнаружены.
В приведенном выше примере Карен может объявить своей команде “actor 2”. Ее команда сначала угадывает ячейку (1, 1) (соответствует букве a), пропустит букву c как уже открытую ячейку (1, 3), затем угадает ячейку (4, 5) и выиграет игру (поскольку другие красные ячейки уже обнаружены).
Карен хочет использовать эту схему, чтобы выиграть игру за один ход. Она знает словарь всех n допустимых слов, а также текущее состояние игры. Найдите подсказку, которую она должна объявить своей команде, чтобы подарить им победу!
Имеется q разных сценариев, которые Вам необходимо решить. Словарь одинаков для всех сценариев, но конфигурации доски могут отличаться.
Входные данные
Первая строка содержит натуральное число n (1 ≤ n ≤ 10^5
) - количество допустимых слов. Каждая из следующих n строк содержит одно слово из словаря. Слова состоят из не менее чем одной и не более чем 30 букв.
Следующая строка содержит натуральное число q (1 ≤ q ≤ 10^5
) - количество сценариев. Затем следуют q строк, каждая из которых описывает доску. Каждая доска представлена таблицей 5 * 5 букв из набора {r, b, n, x} (красный / синий / нейтральный / убийца). Если буква приведена в верхнем регистре, то соответствующая ячейка уже открыта (в противном случае ячейка закрыта). В таблице есть по крайней мере одна синяя и одна красная закрытые ячейки. Ячейка убийца всегда закрыта. Другими словами, состояние доски всегда указывает на то, что игра еще не завершена.
Выходные данные
Для каждого из q сценариев выведите подсказку, состоящую из слова w и числа g (1 ≤ g ≤ 9), которая принесет команде Карен победу. Если в сценарии сообщить такую подсказку невозможно, выведите одно слово “IMPOSSIBLE” (без кавычек) вместо подсказки. Если существует несколько решений, выведите любое. Ответы на разные сценарии следует выводить в отдельных строках.
Пример
Обратите внимание, что Карен не может объявить например cheat 3, так как тогда ее команда раскроет ячейку в позиции (2, 3) и закончит свой ход. Правильными решениями будут zeta 2 или actor 4.