Головоломка <<Суперподстрока>>
시간 제한2초메모리 제한1024 MB
하나의 텍스트 t와 여러 질의 문자열이 주어질 때, 각 질의를 t의 부분문자열 조각으로 최소 개수로 나누고, 불가능하면 NO를 출력한다.
문제
Серёжа --- обычный мальчик. На этот раз ему подарили сложную головоломку под названием <<Суперподстрока>>. Он, как и все дети, любит решать головоломки, но ему становится очень грустно, когда он не может их решить. Родители Сережи заботятся о нем и не хотят, чтобы он грустил, поэтому они хотят узнать, имеет ли решение новая головоломка.
Строка называется <<суперподстрокой>> строки , если существует такая последовательность строк , , , , удовлетворяющая следующим условиям:
- ( является конкатенацией строк )
- каждая является подстрокой строки
В головоломке даны две строки и , причем головоломка имеет решение только тогда, когда --- суперподстрока строки . Соответственно, последовательность , , , называется <<решением головоломки>>. Решение головоломки называется оптимальным, если среди всех решений количество элементов в решении, то есть число , минимально.
Дано головоломок, причем во всех головоломках строки одинаковы. Для каждой головоломки нужно определить, имеет ли она решение. Если головоломка имеет решение, необходимо найти любое оптимальное решение.
입력
В первой строке входного файла задана строка ().
Во второй строке задано число () --- количество головоломок.
В следующих строках заданы головоломки в виде строки ()
Сумма длин строк во всех головоломках не превышает .
Все строки в головоломках состоят только из первых строчных букв латинского алфавита.
출력
В выходной файл выведите строк --- ответ на каждую головоломку в отдельной строке.
Если головоломка не имеет решения, выведите <<NO>>, иначе выведите решение головоломки, разделяя элементы последовательности , , , символом <<|>>.