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

# Legends Always Come Up with Solution
# Author: Manvir Singh

import os
import sys
from io import BytesIO, IOBase
from collections import  deque

def solve():
    n, k = map(int, input().split())
    s = list(map(lambda x: ord(x) - 97, input().rstrip()))
    if n % k:
        print(-1)
    else:
        a, su, l = [0] * 26, 0, 1
        for i in s:
            a[i] += 1
        f = 1
        for i in a:
            if i % k:
                f = 0
            su += (k - (i % k))%k
        if f:
            print("".join(map(lambda x: chr(x + 97), s)))
        else:
            for i in range(n - 1, -1, -1):
                su = su - ((k - (a[s[i]] % k))%k) + ((k - ((a[s[i]] - 1) % k))%k)
                if su <= l:
                    for j in range(s[i] + 1, 26, 1):
                        z = su - ((k - (a[j] % k))%k) + ((k - ((a[j] + 1) % k))%k)
                        if z <= l and (l-z-1) % k == 0:
                            a[s[i]] -= 1
                            s=s[:i]
                            s.append(j)
                            for l in range(l-z-1):
                                s.append(0)
                            a[j]+=1
                            for l in range(26):
                                for z in range((k-(a[l]%k))%k):
                                    s.append(l)
                            print("".join(map(lambda x: chr(x + 97), s)))
                            return
                a[s[i]] -= 1
                l += 1
def main():
    for _ in range(int(input())):
        solve()



# region fastio

BUFSIZE = 8192


class FastIO(IOBase):
    newlines = 0

    def __init__(self, file):
        self._fd = file.fileno()
        self.buffer = BytesIO()
        self.writable = "x" in file.mode or "r" not in file.mode
        self.write = self.buffer.write if self.writable else None

    def read(self):
        while True:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            if not b:
                break
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines = 0
        return self.buffer.read()

    def readline(self):
        while self.newlines == 0:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            self.newlines = b.count(b"\n") + (not b)
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines -= 1
        return self.buffer.readline()

    def flush(self):
        if self.writable:
            os.write(self._fd, self.buffer.getvalue())
            self.buffer.truncate(0), self.buffer.seek(0)


class IOWrapper(IOBase):
    def __init__(self, file):
        self.buffer = FastIO(file)
        self.flush = self.buffer.flush
        self.writable = self.buffer.writable
        self.write = lambda s: self.buffer.write(s.encode("ascii"))
        self.read = lambda: self.buffer.read().decode("ascii")
        self.readline = lambda: self.buffer.readline().decode("ascii")


sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)
input = lambda: sys.stdin.readline().rstrip("\r\n")

if __name__ == "__main__":
    main()