#include<bits/stdc++.h>
using namespace std;

const int N=1e5+5;

inline int read()
{
	int x=0,f=1;
	char c=getchar();
	while(c<'0' || c>'9')
	{
	    if(c=='-')
	        f=-1;
	    c=getchar();
	}
	while(c>='0' && c<='9')
	{
	    x=x*10+c-'0';
	    c=getchar();
	}
	return x*f;
}

char c[N];
int pre[N][30];
int n,k;

inline bool check()
{
	for(int j=0;j<26;j++)
		if(pre[n][j])
			return false;
	return true;
}

char ans[N];
int re[30];

inline bool check1(int id)
{
	for(int i=c[id]-'a'+1;i<26;i++)
	{
		int cnt=0;
		for(int j=0;j<26;j++)
		{
			if(j==i) re[j]=(k-1-pre[id-1][j]+k)%k;
			else re[j]=(k-pre[id-1][j])%k;
			cnt+=re[j];
		}
		if(id+cnt<=n) 
		{
		//	cout<<id<<" "<<re[2]<<endl;
			for(int j=1;j<=id;j++) ans[j]=c[j];
			ans[id]=i+'a';
			int place=n;
			for(int j='z'-'a';j>='b'-'a';j--)
			{
				for(int k=place;k>=place-re[j]+1;k--)
					ans[k]=j+'a';
				place-=re[j];
			}
			for(int j=id+1;j<=place;j++) ans[j]='a';
			for(int j=1;j<=n;j++) cout<<ans[j];
			printf("\n");
			return true;
		}
	}
	return false;
} 

int main()
{	
	int T=read();
	while(T--)
	{
		n=read(); k=read();
		scanf("%s",c+1);
		if(n%k!=0)
		{
			printf("-1\n");
			continue;
		}
		for(int i=1;i<=n;i++) 
			for(int j=0;j<26;j++)
				pre[i][j]=0;
		for(int i=1;i<=n;i++)
			for(int j=0;j<26;j++)
				pre[i][j]=(pre[i-1][j]+(c[i]-'a'==j))%k;
		if(check())
		{
			for(int i=1;i<=n;i++) cout<<c[i];
			printf("\n");
			continue;
		}
		for(int i=n;i>=1;i--)
			if(check1(i))
				break;
	}
	return 0;
}