CF491C Deciphering

题目描述

有一天,Maria Ivanovna 发现了 Sasha 留给 Olya 的一张纸条,上面有一条加密信息。Maria Ivanovna 想知道信息的内容,但不幸的是,这条消息是加密的。Maria Ivanovna 知道她的学生们通常通过用其他字母替换原信息中的每个字母来加密消息。替换的规则是,相同的字母总是被替换成固定的某个字母,不同的字母总是被替换成不同的字母。 Maria Ivanovna 猜测这条信息包含了期末考试的答案(因为它的长度等于期末考试题目的数量)。但她也知道 Sasha 的答案不一定是正确的。每道题有 $K$ 种可能的答案。当然,Maria Ivanovna 知道正确答案。 Maria Ivanovna 决定对加密信息进行解密,使得 Sasha 答对的题目数尽可能多。由于她现在很忙,所以需要你帮她完成这个任务。

输入格式

第一行包含两个整数 $N$(字符串长度,$1 \leq N \leq 2000000$)和 $K$(每个题目的可能答案数,$1\leq K \leq 52$)。每道题目的答案依次用拉丁字母表示,顺序为 abcde...xyzABCDE...XYZ。例如,若 $K=6$,则答案为 abcdef;若 $K=30$,则答案为 abcde...xyzABCD。 第二行包含一串用拉丁字母表示的已加密消息字符串。 第三行包含一串用拉丁字母表示的正确答案字符串。

输出格式

第一行输出 Sasha 最多可能答对的题目数。 第二行输出加密规则,这是一串长度为 $K$ 的字符串,表示学生答案表中每个字母(从 'a' 开始,上述顺序)的解密方式,与其对应的正确答案字母。若存在多种方式取得最大答对数,输出任意一种即可。

说明/提示

由 ChatGPT 5 翻译