Стикеры
В магазине за углом продаётся n различных видов стикеров, i-й вид содержит d-буквенное слово s_i, состоящее из заглавных латинских букв. Все стикеры одного вида идентичны. Можно купить сколько угодно стикеров каждого вида. Требуется составить слово t из продающихся в магазине стикеров, при этом разрешается наклеивать стикер поверх уже существующих. Запрещается отрезать части стикеров, а также как-либо ещё модифицировать их.
Более формально, изначально у нас есть строка z, состоящая из m символов "#" (здесь m - длина строки t). За одно действие мы можем выбрать любую из строк s_i и целое число p между 0 и m-d, и для каждого j {1, ..., d}заменить (p+j)-й символ слова z на j-й символ слова s_i (символы в строках пронумерованы с единицы).
Требуется найти минимальное количество таких действий, после которого получится требуемое слово t.
Входные данные
Первая строка ввода содержит два целых числа n и d (1 ≤ n, d ≤ 50) - количество видов стикеров и количество букв, написанных на каждом стикере.
i-я из последующих n строк задаёт один из видов стикеров и содержит ровно d заглавных латинских букв - словоs_i, написанное на стикере i-го вида.
Последняя строка ввода задаёт требуемое слово t, состоящее из не менее чем одной и не более чем 10^{4 }заглавных латинских букв.
Выходные данные
Выведите одно целое число - минимальное количество стикеров, которое потребуется для того, чтобы составить слово t. Если составить слово из данного набора стикеров невозможно, выведите слово "NO" вместо числа.