#D0989. 补全字母

补全字母

题目描述

小核桃得到一个只由大写字母和问号 ? 组成的字符串,每个 ? 都可以替换成任意一个大写字母。

对于两个位置 i<ji<j,如果第 ii 个字符和第 jj 个字符不同,就称它们构成一对“字符错”。只要 ii 或 jj 不同,就视为不同的字符错。

请你替换所有的 ?,使得字符串中“字符错”的对数最多。一共有 TT 组询问。

输入格式

第一行一个整数 TT,表示询问组数。

接下来 TT 行,每行一个只含大写字母和 ? 的字符串 SS。

输出格式

输出 TT 行,每行一个整数,表示对应字符串中“字符错”的最大对数。

样例

1
A??
3
1
AABB
4
2
??
ABC
1
3

样例解释

样例 1 中,把两个 ? 分别替换成 B、C,得到 ABC,三对位置上的字符都不同,共 33 对。

样例 2 中没有 ?。AABB 中每个 A 与每个 B 都构成一对字符错,共 2×2=42\times2=4 对。

样例 3 中,第一组 ?? 替换成两个不同字母,得 11 对;第二组 ABC 三个字符两两不同,得 33 对。

数据范围与约定

子任务 分值 限制
11 4040 1≤T≤101\le T\le 10,1≤∣S∣≤1061\le \lvert S\rvert\le 10^6,字符串中不含 ?
22 6060 1≤T≤101\le T\le 10,1≤∣S∣≤1061\le \lvert S\rvert\le 10^6,字符串只含大写字母和 ?

对于 100%100\% 的数据,1≤T≤101\le T\le 10,1≤∣S∣≤1061\le \lvert S\rvert\le 10^6,字符串只含大写字母和 ?。