CF1354B Ternary String

题目描述

给定一个字符串 $s$,其中每个字符都是 $1$、$2$ 或 $3$。你需要选择 $s$ 的最短连续子串,使得该子串至少包含这三种字符各一次。 字符串 $s$ 的连续子串是指可以通过从 $s$ 的开头删除若干(可能为零)字符和从结尾删除若干(可能为零)字符得到的字符串。

输入格式

第一行包含一个整数 $t$($1 \le t \le 20000$),表示测试用例的数量。 每个测试用例包含一行字符串 $s$($1 \le |s| \le 200000$)。保证 $s$ 的每个字符都是 $1$、$2$ 或 $3$。 所有测试用例中字符串的总长度不超过 $200000$。

输出格式

对于每个测试用例,输出一个整数,表示包含所有三种字符至少一次的最短连续子串的长度。如果不存在这样的子串,则输出 $0$。

说明/提示

考虑如下示例测试: 在第一个测试用例中,可以使用子串 123。 在第二个测试用例中,可以使用子串 213。 在第三个测试用例中,可以使用子串 1223。 在第四个测试用例中,可以使用子串 3221。 在第五个测试用例中,$s$ 中没有字符 3。 在第六个测试用例中,$s$ 中没有字符 1。 在第七个测试用例中,可以使用子串 3112。 由 ChatGPT 4.1 翻译