Задача №114897. Родные просторы

Вы играете на смартфоне в игру «Родные просторы», в которой управляющий Остап помогает помещику восстановить отцовский дом. Игра происходит следующим образом.

Дана последовательность из \(n\) кристаллов, расположенных в один ряд слева направо. Каждый кристалл относится к одному из \(k\) видов, обозначенных первыми \(k\) английскими буквами. Таким образом, последовательность кристаллов записывается строкой английских букв.

За один ход игры можно удалить из последовательности один кристалл. Цель игрока — получить в результате применения разрешенных видов удалений лексикографически минимально возможную строку.

Разрешённые виды удаления кристаллов заданы таблицей \(A\) размера \(k\times k\) из нулей и единиц. Если \(A_{ij}=1\), то разрешается удалить кристалл вида \(j\), если непосредственно слева от него находится кристалл вида \(i\). Данные действия можно выполнять в любом порядке.

Напомним, что строка \(x\) лексикографически меньше строки \(y\), если выполнено одно из двух условий:

    [leftmargin=1.25cm,noitemsep,topsep=0pt]
  • существует такая позиция символа \(m\), присутствующая в обеих строках, что до \(m\)-го символа строки совпадают, а \(m\)-й символ строки \(x\) меньше \(m\)-го символа \(y\),
  • строка \(x\) является строгим префиксом \(y\) (то есть получается отбрасыванием одного или больше символов с конца строки \(y\)).

Входные данные

В первой строке даны два целых числа \(k\) и \(n\) (\(1 \le k \le 26\), \(1 \le n \le 500\,000\)) — количество видов кристаллов и длина исходной последовательности кристаллов.

В следующих \(k\) строках задана таблица \(A\), \(i\)-я строка содержит ровно \(k\) символов \(0\) или \(1\). Символ в \(i\)-й строке на \(j\)-й позиции равен \(A_{ij}\).

В последней строке записаны \(n\) строчных английских букв, задающие исходную последовательность кристаллов. Гарантируется, что в строке встречаются только первые \(k\) букв английского алфавита, \(i\)-я по счёту буква английского алфавита обозначает \(i\)-й вид кристаллов.

Выходные данные

Выведите лексикографически минимальную строку, которую можно получить из исходной строки разрешёнными действиям.

Система оценки

Ограничения
Подзадача Баллы \(n\) \(k\) Необходимые подзадачи Информация о проверке
1 10 \(n \le 20\) \(k \le 26\) У первая ошибка
2 12 \(n \le 50\) \(k \le 5\) У первая ошибка
3 16 \(n \le 300\) \(k \le 5\) У, 2 первая ошибка
4 17 \(n \le 500\) \(k \le 26\) У, 1–3 первая ошибка
5 10 \(n \le 2\,000\) \(k \le 26\) У, 1–4 первая ошибка
6 9 \(n \le 10\,000\) \(k \le 26\) У, 1–5 первая ошибка
7 8 \(n \le 100\,000\) \(k \le 26\) У, 1–6 первая ошибка
8 11 \(n \le 500\,000\) \(k \le 2\) первая ошибка
9 7 \(n \le 500\,000\) \(k \le 26\) У, 1–8 первая ошибка
Примеры
Входные данные
3 7
010
001
100
abacaba
Выходные данные
aac
Входные данные
3 5
010
001
100
bcacb
Выходные данные
bacb
Сдать: для сдачи задач необходимо войти в систему