아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

콘서트 관람 일정

시간 제한0.3초메모리 제한128 MB

요약
목표 밴드 순서에 맞게 공연 날짜를 증가하는 순서로 고르되, 같은 밴드는 이전에 고른 날짜에서 h_b+1일 이후여야 하는 경우의 수를 센다.
난이도

어려움10점 중 8점

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

문제

존은 A부터 Z까지 26개 밴드의 공연을 즐겨 듣는다. 다가오는 시즌의 일정을 확인해 보니 앞으로 nn일 동안 매일 정확히 한 번의 공연이 열린다. 존은 이 중에서 정확히 kk번의 공연을 정해진 순서대로 보려고 한다. 같은 밴드의 공연을 여러 번 봐도 된다.

밴드마다 공연 비용이 다르기 때문에, 존은 밴드 bb의 공연을 본 뒤에는 다음 공연을 보기 전까지 최소 hbh_b일을 집에서 쉬기로 했다. 즉 dd일에 밴드 bb의 공연을 봤다면, 그다음으로 보는 공연의 날짜는 d+hb+1d + h_b + 1일 이후여야 한다.

존이 원하는 순서대로 공연을 볼 수 있는 일정이 몇 가지인지 구하여라. 그 수가 매우 커질 수 있으므로 109+710^9 + 7로 나눈 나머지를 출력한다.

입력

첫째 줄에 kk와 nn이 공백으로 구분되어 주어진다. (1≤k≤3001 \le k \le 300, 1≤n≤1051 \le n \le 10^5)

둘째 줄에 hAh_A부터 hZh_Z까지 26개의 값이 공백으로 구분되어 주어진다. (0≤hb≤1050 \le h_b \le 10^5)

셋째 줄에 존이 보고 싶은 공연의 밴드를 순서대로 나열한 길이 kk의 문자열이 주어진다. 예를 들어 AFJAZ는 A, F, J, A, Z 순서로 보고 싶다는 뜻이다.

넷째 줄에 앞으로 nn일 동안 매일 공연하는 밴드를 같은 방식으로 나열한 길이 nn의 문자열이 주어진다.

두 문자열은 모두 알파벳 대문자로만 이루어진다.

출력

존이 원하는 순서대로 공연을 볼 수 있는 일정의 개수를 109+710^9 + 7로 나눈 나머지를 한 줄에 출력한다.

예제5

  1. 예제 1

    입력
    2 10
    1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    AB
    ABBBBABBBB
    
    예상 출력
    10
    
  2. 예제 2

    입력
    1 5
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    A
    AABAA
    
    예상 출력
    4
    
  3. 예제 3

    입력
    2 3
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    AB
    BBA
    
    예상 출력
    0
    
  4. 예제 4

    입력
    2 6
    4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    AB
    ABBBBB
    
    예상 출력
    1
    
  5. 예제 5

    입력
    3 6
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    AAA
    AAAAAA
    
    예상 출력
    20