给定一个由小写字母 $ a $ 到 $ z $ 组成的字符串 $ S $,其中第 $ i $ 个字符为 $ S[i] $(下标从 $ 0 $ 开始)。 你需要完成下面两个操作: $ INSERT $ $ c $ 其中 $ c $ 是一个待输入的字符。 你需要在字符串的末尾添加这个字符。 保证输入的字符同样是 $ a $ 到 $ z $ 之间的一个小写字母。 $ QUERY $ $ x $ 其中 $ x $ 是一个输入的整数下标。 对于这个询问,你需要回答在 $ S $ 当中和 $ S[x] $ 相等且与 $ x $ 最近的距离。 输入保证 $ x $ 在当前字符串中合法。 例如 $ S = "abcaba" $,如果我们操作: $ INSERT $ $ a $ 则在 $ S $ 的末端加一个字符 $ a $,$ S $ 变成 $ "abcabaa" $。 接下来操作 $ QUERY $ $ 0 $ 由于 $ S[0] = a $,在 $ S $ 中出现的离他最近的 $ a $ 在下标为 $ 3 $ 的位置上,距离为 $ 3 - 0 = 3 $。 因此应当输出 $ 3 $。 接下来,如果 $ QUERY $ $ 4 $ $ S[4] = b $,$ S $ 中离它最近的 $ b $ 出现在下标为 $ 1 $ 处,距离为 $ 4 - 1 = 3 $。 同样应当输出 $ 3 $。 给定初始字符串 $ S $ 和若干操作,对于每个 $ QUERY $,你需要求出相应的距离。 HINT 由于输入数据较大,C/C++中推荐使用 $ scanf $ 进行读入以获得更快的读入速度。 同时请注意算法复杂度。 输入格式 输入的第一行是一个正整数 $ T(T \leq 20) $,表示测试数据的组数。 每组输入数据的第一行是一个初始串 $ S $。 第二行是一个正整数 $ m(1 \leq m \leq 100000) $,表示总共操作的数量。 接下来 $ m $ 行,每行表示一个操作。 操作的格式如上所述。 数据保证在任何情况下,$ S $ 的长度不会超过 $ 100000 $。 输出格式 对于每个 $ QUERY $,输出所求的最小距离。 如果 $ S $ 中其它位置都不存在和它相同的字符,输出 $ -1 $。 输入样例 2 axb 3 INSERT a QUERY 0 QUERY 1 explore 3 INSERT r QUERY 7 QUERY 1 输出样例 3 -1 2 -1