SOJ ONLINE JUDGE

KMP

난이도: Platinum V 출제자: rlatjwls7882 시간 제한: 1000 ms 메모리 제한: 512 MB
문자열KMP

문자열 $T$와 문자열 $P$가 주어진다.

$T$에서 $P$와 일치하는 부분 문자열이 시작하는 모든 위치를 구하라.

문자열의 첫 번째 문자의 위치는 1이다.

서로 겹치는 부분 문자열도 모두 포함한다.

입력

첫 번째 줄에 문자열 $T$가 주어진다. $(1 \leq |T| \leq 1\,000\,000)$

두 번째 줄에 문자열 $P$가 주어진다. $(1 \leq |P| \leq 1\,000\,000)$

두 문자열은 알파벳 소문자로만 이루어져 있다.

출력

첫 번째 줄에 $T$에서 $P$가 등장하는 횟수를 출력한다.

$P$가 한 번 이상 등장한다면 두 번째 줄에 각 부분 문자열이 시작하는 위치를 오름차순으로 출력한다.

위치는 공백으로 구분한다.

예제 입력 1

ababa
aba

예제 출력 1

2
1 3 

예제 입력 2

abcdefgh
ijk

예제 출력 2

0

제출