검열

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

새로운 교육 과정 개편의 일환으로, 전산학과는 교재를 검열하기로 했다. 이 문제에서는 입력으로 주어진 텍스트 문자열에서 필터 단어 집합에 속한 모든 문자열을 제거하는 프로그램을 작성해야 한다.

형식적으로, 단어 ww가 문자열 ss의 부분 문자열이면(즉 ww의 문자들이 ss 안에서 연속해서 나타나면) wwss에서 제거할 수 있다. 텍스트 문자열 ss와 필터 단어 집합 TT가 주어질 때, TT의 단어들을 반복적으로 제거하여 만들 수 있는 가장 짧은 문자열의 길이를 구하여라. TT의 각 단어는 횟수 제한 없이 제거할 수 있으며, 한 단어를 제거하면 새로운 부분 문자열이 생겨 또 다른 단어를 제거할 수도 있다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 필터 집합 TT의 크기를 나타내는 정수 nn (1n501 \le n \le 50)으로 시작하고, 이어서 처리할 텍스트 문자열 ss, 그리고 TT에 속한 nn개의 단어 t1,,tnt_1, \dots, t_n이 주어진다. 텍스트 문자열과 모든 필터 단어는 소문자 'a'부터 'z'까지만으로 이루어지며 길이는 11 이상 5050 이하이다. 한 테스트 케이스 안의 필터 단어는 모두 서로 다르다. 입력의 끝은 정수 00 하나만 있는 줄로 표시되며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 만들 수 있는 결과 문자열의 최소 길이를 정수 하나로 출력한다.

힌트

[…]는 각 단계에서 제거되는 단어를 나타내고, 는 빈 문자열을 뜻한다.

  • c[cde]defcde[cde]fcdef[cde]f
  • [aa]baab[ba]ab[ab]
  • [aa]baabb[aa]b[bb]