12
12 3
zazasqzqsasq
1 1
z
1 1
a
15 4
abccbaabccbazaa
16 8
cadjfdsljfdkljds
6 2
baazaa
6 3
bosszb
6 1
qwerty
7 7
daaaaaa
14 2
acabcbdeffewzd
18 6
zzzzzzzzzzzzyyyyyz
9 4
aabaabbbc

zazasqzqsasq
z
a
-1
cbbbbbbbbccccccc
baazbz
bpbbpp
qwerty
ddddddd
acabcbdeffexdx
zzzzzzzzzzzzzzzzzz
-1

#include <bits/stdc++.h>
using namespace std;
const int N = 1000010;
int n, k, _;
string s;
vector<int> CNT(200, 0);
vector<int> NTA(200, 0);
int main()
{
    cin >> _;
    while (_--)
    {
        vector<int> CNT(200, 0);
        vector<int> NTA(200, 0);
        cin >> n >> k;
        cin >> s;
        for (int i = 0; i < s.size(); i++)
            CNT[s[i]]++;
        bool ok = 1;
        bool flag = false;
        for (int i = 'a'; i <= 'z'; i++)
        {
            if (CNT[i] % k)
            {
                ok = false;
                break;
            }
        }
        if (n % k)
        {
            puts("-1");
            continue;
        }
        if (ok)
        {
            cout << s << endl;
            continue;
        }
        for (int i = n - 1; i >= 0; i--)
        {
            if (flag)
                break;
            CNT[s[i]]--;
            for (int j = s[i] + 1; j <= 'z'; j++)
            {
                int needtoadd = n - 1 - i; //可以放多少
                CNT[j]++;                  //假如这一位放当前的字母
                NTA.clear();
                for (int p = 'a'; p <= 'z'; p++)
                {
                    NTA[p] = (k - CNT[p] % k) % k;
                    needtoadd -= NTA[p];
                    if (needtoadd < 0)
                        break;
                }
                if (needtoadd >= 0 && needtoadd % k == 0)
                {
                    flag = true;
                    for (int now = 0; now < i; now++)
                        printf("%c", s[now]);
                    printf("%c", j);
                    for (int els = 0; els < needtoadd; els++)
                        printf("a");
                    for (int bac = 'a'; bac <= 'z'; bac++)
                    {
                        while (NTA[bac]--)
                            printf("%c", bac);
                    }
                }
                CNT[j]--;
                if (flag)
                    break;
            }
            if (flag)
                break;
        }
        if (flag)
            puts("");
        else
            puts("-1");
    }
    return 0;
}