매칭 게임

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

어려움8문자열 매칭문자열해시맵슬라이딩 윈도우아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

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

위치 ii에서 시작하는 연속 부분 문자열 sisi+1si+N1s_i s_{i+1} \dots s_{i+N-1}이 패턴 PP의 매칭이라는 것은, PP에 나오는 수를 소문자에 대응시키는 사상 중에서 다음 두 조건을 모두 만족하는 것이 존재한다는 뜻이다. 그 사상으로 패턴을 옮기면 sisi+1si+N1s_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에 대응해야 하기 때문이다.

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

입력

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

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

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

출력

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