만드는 중입니다

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

매칭 게임

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

요약
서로 다른 번호가 서로 다른 문자에 대응하는 전단사 대응 조건에서, 패턴 P와 일치하는 S의 부분 문자열 개수를 센다.
난이도

어려움10점 중 8점

유형
문자열 매칭, 문자열, 해시맵, 슬라이딩 윈도우
정답자
아직 제출이 없습니다

문제

아담과 캐롤은 매칭 게임을 한다. 게임판은 소문자 알파벳 ∣S∣|S|개로 이루어진 문자열 S=s1s2…s∣S∣S = s_1 s_2 \dots s_{|S|}이고, 목표는 특별한 형태의 패턴 PP가 SS 안에서 매칭되는 자리를 모두 찾는 것이다. 패턴의 길이는 NN이고, 1 이상 26 이하의 정수 P1,P2,…,PNP_1, P_2, \dots, P_N으로 정의된다.

위치 ii에서 시작하는 연속 부분 문자열 sisi+1…si+N−1s_i s_{i+1} \dots s_{i+N-1}이 패턴 PP의 매칭이라는 것은, PP에 나오는 수를 소문자에 대응시키는 사상 중에서 다음 두 조건을 모두 만족하는 것이 존재한다는 뜻이다. 그 사상으로 패턴을 옮기면 sisi+1…si+N−1s_i s_{i+1} \dots s_{i+N-1}이 되고, 서로 다른 두 수는 같은 문자에 대응되지 않는다.

예를 들어 SS가 awawww이고 PP가 [10,21,10][10, 21, 10]이면 매칭은 위치 1과 2에서 시작하는 길이 3짜리 부분 문자열 awa와 waw 두 개다. www는 매칭이 아니다. 수 10과 21이 둘 다 문자 w에 대응해야 하기 때문이다.

아담과 캐롤이 정답지를 잃어버려서 매칭을 빠짐없이 찾았는지 확신하지 못한다. SS와 PP가 주어질 때 매칭의 개수를 구하라.

입력

첫째 줄에 문자열 SS가 주어진다. SS는 비어 있지 않고 길이가 5×1055 \times 10^5 이하이며, 각 문자는 a부터 z까지의 소문자다.

둘째 줄에 패턴의 길이 NN이 주어진다 (1≤N≤∣S∣1 \le N \le |S|).

셋째 줄에 패턴을 이루는 정수 P1,P2,…,PNP_1, P_2, \dots, P_N이 공백으로 구분되어 주어진다 (1≤Pi≤261 \le P_i \le 26).

출력

SS에서 찾은 패턴 PP의 매칭 개수를 한 줄에 출력한다.

예제4

  1. 예제 1

    입력
    awawww
    3
    10 21 10
    
    예상 출력
    2
    
  2. 예제 2

    입력
    abcdefghij
    10
    1 2 3 4 5 6 7 8 9 1
    
    예상 출력
    0
    
  3. 예제 3

    입력
    abbabaabbaababba
    4
    1 2 2 1
    
    예상 출력
    5
    
  4. 예제 4

    입력
    aabcddabccefkkgem
    5
    10 10 3 14 9
    
    예상 출력
    4