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

# by the authority of GOD     author: manhar singh sachdev #

import os,sys
from io import BytesIO, IOBase

def check(ls,k,su):
    a = 0
    for i in ls:
        a += k-(i%k if i%k else k)
    if a <= su and not (su-a)%k:
        return 1
    return 0

def solve(n,k,s):
    cou = [0]*26
    for i in s:
        cou[ord(i)-97] += 1
    if check(cou,k,0):
        return s
    for i in range(n-1,-1,-1):
        z = ord(s[i])-97
        cou[z] -= 1
        for j in range(z+1,26):
            cou[j] += 1
            if check(cou,k,n-1-i):
                st = list(s[:i])+[chr(j+97)]
                ch = sorted(set(st))
                val = [0]*len(ch)
                tot = n-1-i
                for ind,ii in enumerate(ch):
                    z = cou[ord(ii)-97]
                    zz = k-(z%k if z%k else k)
                    tot -= zz
                    val[ind] += zz
                st.extend(['a']*tot)
                for ind in range(len(ch)):
                    st.extend([ch[ind]]*val[ind])
                return ''.join(st)
            cou[j] -= 1
    return -1

def main():
    for _ in range(int(input())):
        n,k = map(int,input().split())
        s = input().strip()
        print(solve(n,k,s))

# Fast IO Region
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()