스티커 재배치

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

요약
스티커 문자열이 S를 부분 문자열로 포함하도록 보드판의 스티커를 재배치하는 최소 비용을 구한다.
난이도

보통10점 중 7점

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

문제

11번 스티커부터 MM번 스티커까지 총 MM종류의 스티커가 있다. jj번 스티커에는 알파벳 소문자 s_js\_j가 적혀 있다. 이때 같은 알파벳이 적힌 스티커가 여러 종류 있을 수 있다.

여러분은 NN개의 칸으로 나누어진 보드판을 하나 갖고 있다. 각 칸에는 스티커가 하나씩 붙어 있고, ii번째 칸에는 b_ib\_i번 스티커가 붙어 있다. 같은 종류의 스티커가 여러 개의 칸에 붙어 있는 것도 가능하다. 11번째 칸에 있는 스티커부터 NN번째 칸에 있는 스티커까지 적힌 알파벳을 순서대로 읽으면 알파벳 소문자로 구성된 길이가 NN인 문자열을 하나 얻는다. 이를 스티커 문자열이라고 정의한다.

여러분은 다음 시행을 통해 스티커 문자열을 바꿀 수 있다. 모든 시행을 완료하였을 때, 보드판에 빈칸이 있으면 안 된다.

  • 스티커가 붙어 있는 칸의 스티커를 뗄 수 있다. 스티커는 강력 접착제로 붙어있기 때문에, jj번 스티커를 떼는 데에는 d_jd\_j만큼의 비용이 든다. 스티커를 뗀 칸은 빈칸이 된다.
  • 빈칸을 하나 골라서 스티커를 붙일 수 있다. 이때, 스티커를 새로 구매하여 붙이거나 이미 떼었던 스티커를 재활용하여 붙이는 것이 가능하다. 스티커를 붙일 때는 비용이 발생하지 않으며, jj번 스티커를 한 장 구매하는 데에는 a_ja\_j만큼의 비용이 든다. 같은 종류의 스티커를 여러 장 구매하는 것도 가능하다.

여러분의 목표는, 적절하게 시행을 반복하여 스티커 문자열이 입력으로 주어진 길이가 K(≤N)K(\leq N)인 문자열 SS를 부분 문자열로 포함하도록 만드는 것이다. 그러기 위한 최소 비용을 구하여라.

입력

첫 번째 줄에 정수 NN, MM, KK가 공백으로 구분되어 주어진다.

두 번째 줄부터 MM개의 줄에 걸쳐 스티커의 정보가 주어진다. 그중 jj번째 줄에는 jj번 스티커의 정보 s_js\_j, d_jd\_j, a_ja\_j가 공백으로 구분되어 주어진다.

그다음 줄에 NN개의 정수 b_1,⋯ ,b_Nb\_1,\cdots ,b\_N이 공백으로 구분되어 주어진다. b_ib\_i는 보드판의 ii번째 칸에 있는 스티커의 번호를 의미한다.

그다음 줄에 길이가 KK인 알파벳 소문자로 구성된 문자열 SS가 주어진다.

출력

스티커 문자열이 SS를 부분 문자열로 포함하도록 만드는 데 필요한 최소 비용을 출력한다. 만약 SS를 부분 문자열로 포함하도록 만들 수 없다면 -1을 출력한다.

제한

  • 1≤N,M≤5001\le N,M\le 500
  • 1≤K≤N1\le K\le N
  • s_js\_j는 알파벳 소문자이다. (1≤j≤M)(1 \leq j \leq M)
  • 1≤d_j,a_j≤1,0001\le d\_j,a\_j\le 1\\, 000 (1≤j≤M1\le j\le M)
  • 1≤b_i≤M1\le b\_i\le M (1≤i≤N1\le i\le N)

힌트

문자열 TT의 부분 문자열이란, 문자열 TT에서 연속된 일부분에 해당하는 문자열을 의미한다. 예를 들어 문자열 TT가 "goodbyeboj"이라면 "goo", "db", "j"는 TT의 부분 문자열이고, "a", "god", "job"는 TT의 부분 문자열이 아니다.

예제3

  1. 예제 1

    입력
    5 5 3
    w 3 1
    a 2 2
    p 1 3
    a 2 2
    s 3 1
    1 2 3 4 5
    aaa
    
    예상 출력
    3
    
  2. 예제 2

    입력
    3 6 3
    b 1 2
    o 2 3
    j 3 4
    b 4 5
    o 5 6
    j 6 7
    1 5 3
    boj
    
    예상 출력
    0
    
  3. 예제 3

    입력
    3 4 3
    g 1 1
    o 2 2
    o 3 3
    d 4 4
    3 2 1
    bye
    
    예상 출력
    -1