만드는 중입니다

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

화학 암호

면접 대비

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

요약
암호 문자열과 원소 기호 목록이 주어질 때, 암호를 부분 수열로 포함하는 기호들의 최소 개수를 구합니다. 만들 수 없으면 -1을 출력합니다.
난이도

보통10점 중 4점

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

문제

보리스는 화학을 아주 좋아한다. 이유는 단순하다. 이 학문을 알면 집에서 보이지 않는 잉크, 독, 폭약 등 건강한 청소년의 관심을 끌 만한 것들을 만들 수 있다.

보리스는 자신 말고는 누구도 실험 기록을 읽지 못하길 바라서 특별한 암호를 쓴다. 여러 단어를 적을 때 단어를 순서대로 이어 쓴 다음, 그 결과 문자열에서 글자 몇 개를 지울 수 있다.

최근 보리스는 정사각형 격자 구조의 결정을 합성하는 실험을 다시 해야 했다. 일기를 살펴본 뒤, 그는 결정에 들어 있던 화학 원소 집합을 암호로 복원할 수 없다는 사실을 깨달고 놀랐다. 보리스는 원소가 그리 많지 않았다고 분명히 기억하므로, 일기에 적힌 암호를 만들 수 있는 원소의 최소 개수를 구해 달라고 부탁한다.

보리스는 지금까지 사용한 모든 화학 원소의 목록을 제공할 수 있다. 또한 보리스가 부주의해서 같은 원소를 여러 번 적었을 수도 있다. 이 경우 원소가 나타날 때마다 각각 센다.

입력

첫 줄에 암호 문자열 ss가 주어진다 (1≤∣s∣≤1001 \le |s| \le 100). 둘째 줄에는 보리스가 사용했을 수 있는 화학 원소의 개수 nn이 주어진다 (1≤n≤1001 \le n \le 100). 이후 nn개의 줄에 각각 한 글자 또는 두 글자로 된 원소 기호가 한 줄씩 주어진다.

입력의 모든 문자열은 영문 대문자와 소문자로만 이루어진다. 대문자와 소문자는 서로 다른 문자로 취급한다.

출력

암호를 만들 수 있는 화학 원소의 최소 개수를 한 줄에 출력한다. 답이 없으면 -1을 출력한다.

예제2

  1. 예제 1

    입력
    FeCuAg
    2
    O
    H
    
    예상 출력
    -1
    
  2. 예제 2

    입력
    FeCgCu
    3
    Fe
    Cu
    Ag
    
    예상 출력
    4