CF1493C K-beautiful Strings

题目描述

给定一个只包含小写英文字母的字符串 $s$ 和一个整数 $k$。我们称一个只包含小写英文字母的字符串为“美丽的”,当且仅当该字符串中每个字母出现的次数都能被 $k$ 整除。请你找到长度为 $n$ 的、字典序不小于字符串 $s$ 的最小美丽字符串。如果不存在这样的字符串,输出 $-1$。 字符串 $a$ 的字典序小于字符串 $b$ 当且仅当满足以下条件之一: - $a$ 是 $b$ 的前缀,且 $a \ne b$; - 在 $a$ 和 $b$ 第一个不同的位置,$a$ 的字母在字母表中比 $b$ 的对应字母更靠前。

输入格式

第一行包含一个整数 $T$($1 \le T \le 10\,000$),表示测试用例的数量。 接下来的 $2 \cdot T$ 行描述每个测试用例。 每个测试用例的第一行包含两个整数 $n$ 和 $k$($1 \le k \le n \le 10^5$),分别表示字符串 $s$ 的长度和整数 $k$。 第二行包含一个只由小写英文字母组成的字符串 $s$。 保证所有测试用例中 $n$ 的总和不超过 $10^5$。

输出格式

对于每个测试用例,输出一行,表示长度为 $n$ 的、字典序不小于 $s$ 的最小美丽字符串。如果不存在这样的字符串,输出 $-1$。

说明/提示

在第一个测试用例中,"acac" 字典序大于等于 $s$,并且每个字母出现 $2$ 次或 $0$ 次,因此它是美丽的。 在第二个测试用例中,$s$ 中每个字母出现 $0$ 次或 $1$ 次,因此 $s$ 本身就是答案。 可以证明第三个测试用例不存在符合条件的字符串。 在第四个测试用例中,"abaabaaab" 中每个字母出现 $0$、$3$ 或 $6$ 次,这些数都能被 $3$ 整除。 由 ChatGPT 4.1 翻译