残缺的字符串

题目描述

很久很久以前,在你刚刚学习字符串匹配的时候,有两个仅包含小写字母的字符串 $A$ 和 $B$,其中 $A$ 串长度为 $m$,$B$ 串长度为 $n$。可当你现在再次碰到这两个串时,这两个串已经老化了,每个串都有不同程度的残缺。 你想对这两个串重新进行匹配,其中 $A$ 为模板串,那么现在问题来了,请回答,对于 $B$ 的每一个位置 $i$,从这个位置开始连续 $m$ 个字符形成的子串是否可能与 $A$ 串完全匹配?

输入输出格式

输入格式


第一行包含两个正整数 $m,n$,分别表示 $A$ 串和 $B$ 串的长度。 第二行为一个长度为 $m$ 的字符串 $A$。 第三行为一个长度为 $n$ 的字符串 $B$。 两个串均仅由小写字母和 $\texttt *$ 组成,其中 $\texttt *$ 表示相应位置已经残缺。

输出格式


第一行包含一个整数 $k$,表示 $B$ 串中可以完全匹配 $A$ 串的位置个数。 若 $k>0$,则第二行输出 $k$ 个正整数,从小到大依次输出每个可以匹配的开头位置(下标从 $1$ 开始)。

输入输出样例

输入样例 #1

3 7
a*b
aebr*ob

输出样例 #1

2
1 5

说明

$100\%$ 的数据满足 $1 \le m \le n \le 3 \times 10^5$。