사진 이어 붙이기
면접 대비시간 제한0.3초메모리 제한512 MB
도시 이름 C가 주어질 때, 각 친구 이름을 C의 부분 문자열들을 이어 붙여 만들 수 있는 최소 조각 수를 구하고, 불가능하면 -1을 출력한다.
문제
엔조는 최근 몬테비데오라는 도시에 여행을 갔고, 그곳에서 도시 이름이 적힌 큰 간판을 보았다. 그는 간판의 사진을 찍어 콜라주를 만들어 친구 데모니오에게 보내기로 했다. 엔조는 간판의 일부분을 찍은 사진을 하나 이상 이어 붙여 친구의 이름을 만들려고 한다. 예를 들어 문자열 “MONTEVIDEO”에서 “DE-MON-I-O”를 이어 붙여 친구의 이름을 만들 수 있으며, 이때 네 장의 사진이 필요하다. 더 적은 수의 사진으로는 만들 수 없다는 것은 쉽게 보일 수 있다.
도시의 이름과 친구들의 이름 목록이 주어진다. 각 친구의 이름을 만들기 위해 필요한 사진의 최소 개수를 구하라. 이름을 만들 때 사진은 회전하거나 반사하거나 어떤 방식으로든 변형할 수 없다.
입력
첫째 줄에는 도시의 이름을 나타내는 문자열 가 주어진다. 둘째 줄에는 친구의 수를 나타내는 양의 정수 이 주어진다. 다음 개의 줄에는 각각 친구의 이름을 나타내는 문자열이 주어진다. 모든 문자열은 비어 있지 않으며 대문자로만 이루어져 있다. 모든 문자열의 길이의 합은 이하이다.
출력
입력에 주어진 각 이름을 만들기 위해 필요한 사진의 최소 개수를 한 줄에 하나씩 줄에 걸쳐 출력한다. 이름을 만들 수 없으면 “-1”을 출력한다.