CF716B Complete the Word

题目描述

ZS the Coder 喜欢阅读词典。他认为,如果一个单词存在长度为 $26$ 的子串(连续字母片段),且这个子串恰好包含英文全部 $26$ 个字母各出现一次,那么这个单词就是“好”的。特别地,如果字符串长度严格小于 $26$,那么这样的子串一定不存在,因此它不是“好”的。 现在,ZS the Coder 告诉你一个单词,其中有些字母他已经忘记了,用问号('?')表示。他希望你判断是否可能将这些问号替换成某些大写英文字母,使得得到的单词是“好”的。如果可以,他还希望你给出一个可能的构造结果。你能帮助他吗?

输入格式

输入的第一行包含一个字符串 $s$($1 \leq |s| \leq 50000$),表示 ZS the Coder 记得的单词。字符串中的每个字符都为大写英文字母('A'-'Z')或者问号('?'),问号表示 ZS the Coder 不记得的字母。

输出格式

如果没有任何方法可以将所有问号替换为大写英文字母,使得得到的单词是“好”的,那么只需要输出一行 $-1$。 否则,请输出一个满足条件的可能的“好”的单词,要求除了问号以外的字符和输入中的字符串一致,问号被替换为某些大写英文字母。 如果有多种答案,可以输出任意一种。

说明/提示

在第一个样例中,`ABCDEFGHIJKLM NOPQRZTUVWXYS` 是一个有效答案,因为它包含一个长度为 $26$ 的子串(此例为整个字符串),该子串恰好包含了全部 $26$ 个字母各一次。注意,还有很多其它合法解,例如 `ABCDEFGHIJKLMNOPQRSTUVWXYZ` 或 `ABCEDFGHIJKLMNOPQRZTUVWXYS`。 第二个样例没有问号且输入字符串的任意长度为 $26$ 的子串都无法包含所有英文字母,因此输出 $-1$。 在第三个样例中,任何包含全部 $26$ 个英文字母的长度为 $26$ 的字符串都可作为答案。 由 ChatGPT 5 翻译