CF2069D Palindrome Shuffle

题目描述

给定一个由小写拉丁字母组成的字符串 $s$。 你可以对字符串 $s$ 执行以下操作:选择一个连续的(可能为空的)子串,并对其进行洗牌(即重新排列子串中的字符顺序)。 注意:回文是指正向和反向读取相同的字符串。例如,字符串 a、bab、acca、bcabcbacb 是回文,而 ab、abbbaa、cccb 则不是。 你的任务是确定为了将给定字符串 $s$ 转换为回文,必须进行操作的最小子串长度。

输入格式

第一行包含一个整数 $t$($1 \le t \le 10^4$)——测试用例的数量。 每个测试用例仅包含一行字符串 $s$($2 \le |s| \le 2 \cdot 10^5$),由小写拉丁字母组成。 输入额外约束: - 字符串 $s$ 的长度为偶数; - 字符串 $s$ 总能被转换为回文; - 所有测试用例的 $s$ 长度总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出一个整数——为了将字符串转换为回文必须进行操作的最小子串长度。

说明/提示

第一个示例中,可以按如下方式操作:baba → baab。 第二个示例中,字符串已经是回文,因此可以选择空子串进行操作。 第三个示例中,可以按如下方式操作:ddaa → adda。 第四个示例中,可以按如下方式操作:acbacddacbca → acbcaddacbca。 翻译由 DeepSeek R1 完成