CF822B Crossword solving
题目描述
很快 Leha 就被计算两个阶乘的最大公约数这件事给弄腻了,于是他决定去解一些填字游戏。众所周知,填字游戏非常有趣,不过有时候也非常难。在解其中一道题的过程中,Leha 需要解决一个简单的小问题。你也可以做到,对吧?
Leha 有两个字符串 $s$ 和 $t$。黑客想要修改字符串 $s$,使得它能够作为子串出现在 $t$ 中。所有允许的修改如下:Leha 可以选择 $s$ 中的一个位置,并将该位置的字符替换为问号“?”。黑客确信,在比较过程中,问号可以代表任意字符。例如,如果他得到字符串 $s$ = "ab?b",则它会作为 $t$ = "aabrbb" 的一个子串出现。
保证字符串 $s$ 的长度不超过字符串 $t$ 的长度。请帮助黑客尽可能少地在 $s$ 上替换字符,使其修改后的结果能作为 $t$ 的子串出现。问号“?”应视为与任何其他字符相等。
输入格式
第一行包含两个整数 $n$ 和 $m$,表示字符串 $s$ 和 $t$ 的长度($1 \leq n \leq m \leq 1000$)。
第二行包含 $n$ 个小写英文字母,表示字符串 $s$。
第三行包含 $m$ 个小写英文字母,表示字符串 $t$。
输出格式
第一行输出一个整数 $k$,表示需要替换的最少字符数。
第二行输出 $k$ 个不同整数,表示需要替换的 $s$ 中字符的位置。位置顺序可以任意,编号从 1 开始。如果有多种方案,可以输出任意一种。
说明/提示
由 ChatGPT 5 翻译