CF527B Error Correct System

题目描述

Ford Prefect 获得了一份毛巾公司的网站开发工作。他当前的任务是为公司网站开发一个搜索引擎。在开发过程中,他需要编写一个子程序,用于判断长度相等的字符串 $S$ 和 $T$ 是否“相似”。经过简短的网络搜索,他了解了汉明距离:对于两个等长字符串 $S$ 和 $T$,汉明距离定义为两个字符串在不同字符位置的数量。例如,“permanent” 和 “pergament” 这两个单词的汉明距离为 $2$,因为它们在第 $4$ 和第 $6$ 个字母上不同。 此外,在查找资料时,他还注意到现代搜索引擎通常拥有强大的纠错机制,以提高搜索质量。Ford 并不十分了解人类,因此他假定最常见的错误是将字符串中的两个(不一定相邻的)字母交换。现在他想要编写一个函数,判断应该交换字符串 $S$ 的哪两个字母,才能使新的 $S$ 与 $T$ 之间的汉明距离尽可能小,或者判断是否无法通过一次交换降低两个字符串的距离。 请帮助他完成这个功能!

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 200000$),表示字符串 $S$ 和 $T$ 的长度。 第二行包含字符串 $S$。 第三行包含字符串 $T$。 所有字符串均仅包含小写拉丁字母。

输出格式

第一行输出一个整数 $x$,表示通过至多一次交换 $S$ 中任意两个字母后,$S$ 和 $T$ 的最小可能汉明距离。 第二行输出下标 $i$ 和 $j$($1 \leq i, j \leq n$,且 $i \neq j$),表示通过交换 $S$ 的第 $i$ 和 $j$ 个字母能达到最小距离;如果不需要交换字符则输出“-1 -1”。 如果有多组答案,输出任意一组均可。

说明/提示

在第二个测试样例中,输出 $i = 2$, $j = 3$ 是可以接受的。 由 ChatGPT 5 翻译