만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

주문 합치기

시간 제한3초메모리 제한1024 MB

요약
주어진 주문을 이어 붙이거나 곱하는 연산으로 문자열 t를 만드는 최소 단계 수를 구하고, 불가능하면 -1을 출력합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 문자열 매칭, 그리디
정답자
아직 제출이 없습니다

문제

메이비스는 조너선을 되찾기 위해 아주 강력한 주문을 걸고 싶어 한다. 그녀는 여러 일반 주문을 합쳐서 강한 주문 하나를 만들려고 한다. 모든 주문은 비어 있지 않은 소문자 라틴 문자열이다. 메이비스에게는 kk개의 일반 주문 a_ia\_i가 있다. 또한 그녀가 얻고자 하는 주문 tt를 알고 있다.

합치기 과정은 다음과 같다. 처음에 메이비스의 문자열 ss는 빈 문자열이다. 메이비스는 합치기 단계를 여러 번 수행한다. 각 단계에서 일반 주문의 번호 ii를 고르고 다음 연산 중 하나를 한다.

  • s=s+a_is = s + a\_i: 두 문자열을 이어 붙인다.
  • s=s×a_is = s \times a\_i: 문자열을 곱한다. ss의 각 문자 뒤마다 a_ia\_i를 적는다.

×\times 연산은 교환법칙이 성립하지 않는다.

합치기가 끝난 뒤 메이비스는 문자열 tt를 얻고 싶어 한다. 이를 위해 필요한 단계 수의 최솟값을 구하라.

입력

첫 줄에 메이비스가 얻고자 하는 주문 문자열 tt (1≤∣t∣≤5×1041 \le |t| \le 5 \times 10^4)가 주어진다. 다음 줄에는 메이비스가 가진 일반 주문의 개수 kk (1≤k≤10001 \le k \le 1000)가 주어진다. 이어서 kk개의 줄에 일반 주문 a_ia\_i (1≤∣a_i∣≤1001 \le |a\_i| \le 100)가 한 줄에 하나씩 주어진다. 모든 문자열은 비어 있지 않으며 소문자 라틴 문자로만 이루어져 있다.

출력

메이비스가 문자열 tt를 얻는 데 필요한 최소 단계 수를 한 줄에 출력한다. 불가능하면 −1-1을 출력한다.

예제3

  1. 예제 1

    입력
    abbabbabb
    3
    aa
    bb
    a
    
    예상 출력
    3
    
  2. 예제 2

    입력
    arbrcrxryrzrr
    3
    abc
    xyz
    r
    
    예상 출력
    4
    
  3. 예제 3

    입력
    dabcba
    4
    b
    ab
    c
    d
    
    예상 출력
    -1