아담과 캐롤은 매칭 게임을 한다. 게임판은 소문자 알파벳 ∣S∣개로 이루어진 문자열 S=s1s2…s∣S∣이고, 목표는 특별한 형태의 패턴 P가 S 안에서 매칭되는 자리를 모두 찾는 것이다. 패턴의 길이는 N이고, 1 이상 26 이하의 정수 P1,P2,…,PN으로 정의된다.
위치 i에서 시작하는 연속 부분 문자열 sisi+1…si+N−1이 패턴 P의 매칭이라는 것은, P에 나오는 수를 소문자에 대응시키는 사상 중에서 다음 두 조건을 모두 만족하는 것이 존재한다는 뜻이다. 그 사상으로 패턴을 옮기면 sisi+1…si+N−1이 되고, 서로 다른 두 수는 같은 문자에 대응되지 않는다.
예를 들어 S가 awawww이고 P가 [10,21,10]이면 매칭은 위치 1과 2에서 시작하는 길이 3짜리 부분 문자열 awa와 waw 두 개다. www는 매칭이 아니다. 수 10과 21이 둘 다 문자 w에 대응해야 하기 때문이다.
아담과 캐롤이 정답지를 잃어버려서 매칭을 빠짐없이 찾았는지 확신하지 못한다. S와 P가 주어질 때 매칭의 개수를 구하라.