CF1906H Twin Friends

题目描述

你遇到了两位新朋友,他们是一对双胞胎。哥哥的名字是 $A$,由 $N$ 个字符组成。弟弟的名字是 $B$,由 $M$ 个字符组成。已知 $N \leq M$。 你想给他们每人取一个昵称。对于哥哥,你可以任选 $A$ 的一个排列作为昵称。对于弟弟,你可以从 $B$ 的任意一个排列中恰好删除 $M-N$ 个字符,得到昵称。分别记哥哥和弟弟的昵称为 $A'$ 和 $B'$。 你希望昵称满足以下要求:对于每一个 $1 \leq i \leq N$,$B'_i$ 必须等于 $A'_i$ 或者字母表中紧跟在 $A'_i$ 之后的那个字母(如果存在的话)。 请你计算满足要求的不同昵称对 $(A', B')$ 的数量。如果至少有一个昵称不同,则认为两个昵称对不同。由于答案可能很大,请输出答案对 $998\,244\,353$ 取模后的结果。

输入格式

第一行包含两个整数 $N$ 和 $M$($1 \leq N \leq M \leq 200\,000$)。 第二行包含一个长度为 $N$ 的字符串 $A$。 第三行包含一个长度为 $M$ 的字符串 $B$。 所有字符串均由大写英文字母组成。

输出格式

输出一个整数,表示满足条件的不同昵称对 $(A', B')$ 的数量,对 $998\,244\,353$ 取模。

说明/提示

样例输入输出 1 说明 这 $9$ 对昵称分别为: - (AAM, AAN), - (AAM, ABN), - (AAM, BAN), - (AMA, ANA), - (AMA, ANB), - (AMA, BNA), - (MAA, NAA), - (MAA, NAB), - (MAA, NBA)。 样例输入输出 2 说明 这 $120$ 对昵称是所有 $A'$ 是 BINUS 的排列且 $B' = A'$ 的情况。 由 ChatGPT 4.1 翻译