CF1821C Tear It Apart

题目描述

给定一个由小写拉丁字母组成的字符串 $s$。 每次操作,你可以选择字符串中的若干(至少一个)位置,这些位置之间不能相邻。然后你删除这些位置上的字母,剩下的部分按原顺序拼接。 请问,最少需要多少次操作,才能使字符串 $s$ 中所有字母都相同?

输入格式

第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 每个测试用例仅一行,包含一个由小写拉丁字母组成的字符串 $s$,其长度为 $1$ 到 $2 \cdot 10^5$。 所有测试用例中字符串的总长度不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出一个整数,表示将给定字符串 $s$ 变为所有字母相同所需的最少操作次数。

说明/提示

在第一个测试用例中,你可以选择第 $2, 4, 6$ 个位置,删除对应的字母 'b'、'c' 和 'b'。 在第三个测试用例中,字符串中的字母已经全部相同,因此不需要进行任何操作。 在第四个测试用例中,一种可能的两步操作方案如下:首先选择第 $1, 4, 6$ 个位置,字符串变为 "bce"。然后选择第 $1$ 和 $3$ 个位置,字符串变为 "c"。此时所有字母都相同,因为只剩下一个字母。 由 ChatGPT 4.1 翻译