残缺的字符串
题目描述
很久很久以前,在你刚刚学习字符串匹配的时候,有两个仅包含小写字母的字符串 $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$。