퍼즐 「슈퍼부분문자열」
시간 제한2초메모리 제한1024 MB
주어진 문자열 t로 여러 문자열 s를 만들 때, t의 부분 문자열들을 이어 붙여 조각 수가 가장 적은 분할을 찾아 출력하고, 불가능하면 NO를 출력합니다.
문제
세료자는 평범한 소년이다. 이번에는 「슈퍼부분문자열」이라는 어려운 퍼즐을 선물 받았다. 그는 퍼즐 풀기를 좋아하지만, 풀지 못하면 많이 슬퍼한다. 부모는 그가 슬퍼하지 않기를 바라므로, 이 퍼즐에 해가 있는지 알고 싶어 한다.
문자열 가 문자열 의 슈퍼부분문자열이라는 것은, 다음 두 조건을 만족하는 문자열들의 수열 가 존재한다는 뜻이다.
- (는 들을 이어 붙인 것이다)
- 각 는 의 부분문자열이다
퍼즐은 가 의 슈퍼부분문자열일 때에만 해가 있다. 이 수열 를 퍼즐의 해라고 한다. 해 중에서 가 가장 작은 것을 최적의 해라고 한다.
같은 에 대해 개의 퍼즐이 주어진다. 각 퍼즐에 해가 있는지 판별하고, 해가 있으면 최적의 해 하나를 구하라.
입력
첫째 줄에 문자열 ()가 주어진다.
둘째 줄에 퍼즐의 개수 ()이 주어진다.
이후 개의 줄에 각각 문자열 ()가 주어진다. 모든 의 길이 합은 을 넘지 않는다.
모든 문자열은 소문자 라틴 알파벳의 처음 10개 글자로만 이루어져 있다.
출력
개의 줄에 각 퍼즐의 답을 출력한다. 해가 없는 퍼즐은 NO를 출력한다. 해가 있으면 해의 원소 를 문자 |로 구분하여 출력한다.