1516 - KMP
Time Limit : 1 秒
Memory Limit : 128 MB
给出两个字符串s1 和 s2,若s1的区间[l,r]子串与s2完全相同,则称s2在s1中出现了,其出现位置为l。现在请你求出s2在s1中所有出现的位置。
定义一个字符串s的border为s的一个非s本身的子串t,满足t既是s的前缀,又是s的后缀。
对于s2,你还需要求出对于每个前缀s'的最长border t'的长度。
Input
第一行为一个字符串,即为s1.
第二行为一个字符串,即为s2.
Output
首先输出若干行,每一行一个整数,按从小到大的顺序输出s2在s1中出现的位置。
最后一行输出|s2|个整数,第i个整数表示s2的长度为i的前缀的最长border长度。
Examples
Input
ABABABC ABA
Output
1 3 0 0 1
Input
AABAABAABAAF AABAAF
Output
7 0 1 0 1 2 0