AT_abc462_f [ABC462F] More ABC

题目描述

给定一个仅包含大写英文字母的字符串 $S$。 高桥的目标是:通过替换 $S$ 中若干个字符,将 $S$ 中 $\texttt{ABC}$ 子串的出现次数**增加** $K$ 次。 判断这是否可行。如果可行,求出至少要替换多少字符。 有 $T$ 组测试数据,解决每一个。 :::info[什么是替换?] 替换 $S$ 中一个字符,即选择一个整数 $1 \le i \le |S|$,然后将 $S$ 的第 $i$ 个字符替换为任意一个**大写**英文字母。 这里,$|S|$ 为 $S$ 的长度。 ::: :::info[什么是子串?] $S$ 的子串是通过删除 $S$ 开头或结尾若干的字符得到的字符串。 如果两个子串被取出的位置不同,则它们不同,尽管它们本质相同。 :::

输入格式

按照以下格式从标准输入读入: > $T$ > $\mathrm{case}_1$ > $\mathrm{case}_2$ > $\vdots$ > $\mathrm{case}_T$ $\mathrm{case}_i$ 为第 $i$ 组测试数据。 每组测试数据的格式如下: > $S$ > $K$

输出格式

输出 $T$ 行。 第 $i$ 行 $(1 \le i \le T)$ 需要包含第 $i$ 组测试数据的答案。 对于每组测试数据,如果不能达成高桥的目标,输出 $-1$,否则输出最少替换次数。

说明/提示

### 样例 1 解释 对于第一组测试数据,给定的字符串 $S=\texttt{ATCABC}$ 有 $1$ 个 $\texttt{ABC}$ 子串。 将 $S$ 的第二个字符替换为 $\tt B$,得到 $S=\texttt{ABCABC}$,包含 $2$ 个 $\texttt{ABC}$ 子串。 所以,替换 $1$ 个字符会使得 $S$ 的 $\texttt{ABC}$ 子串数量增加 $1$,达成了目标。所以在第一行输出 $1$。 对于第二组测试数据,给定的字符串 $S=\texttt{ABABC}$ 有 $1$ 个 $\texttt{ABC}$ 子串。无论如何替换 $S$ 中的字符,都不能使得 $S$ 出现 $2$ 个 $\texttt{ABC}$ 子串。 所以,在第二行输出 $-1$。 对于第三组测试数据,给定的字符串 $S=\texttt{XABCYZ}$ 有 $1$ 个 $\texttt{ABC}$ 子串。 为了使得 $S$ 包含 $2$ 个 $\texttt{ABC}$ 子串,$S$ 中所有字符均需要被替换,得到 $S=\texttt{ABCABC}$。 所以,在第三行输出 $6$。 #### 数据范围 + $1 \le T \le 10^5$ + $S$ 的长度在 $[3,3 \times 10^5]$ 之间,只包含大写英文字母。 + $1 \le K \le 10$ + 输入中所有测试数据的 $S$ 的总长不超过 $3 \times 10^5$。 + $T,K$ 为整数。