#include<bits/stdc++.h>
using namespace std;
int t,n,k,p[30],ma,mi;
char s[100010];
char chmin,chmax;
void get()
{
ma=0;mi=0x3f3f3f3f;
for(int i=1;i<=n;i++)
{
if(p[s[i]-'a'+1]>ma)
{
ma=p[s[i]-'a'+1];
}
if(p[s[i]-'a'+1]<mi)
{
mi=p[s[i]-'a'+1];
}
}
}
int main()
{
cin>>t;
for(int ii=1;ii<=t;ii++)
{
cin>>n>>k;mi=0x3f3f3f3f,ma=0;
memset(p,0,sizeof p);
for(int i=1;i<=n;i++)
{
cin>>s[i];
p[s[i]-'a'+1]++;
}
get();
if(ma-mi>k)
{
cout<<-1<<endl;
continue;
}
for(int i=1;i<=n;i++)
{
for(int j='a';j<='z';j++)
{
if(p[j-'a'+1]>0)
{
p[j-'a'+1]--;
get();
if(ma-mi>k)
{
p[j-'a'+1]++;
get();
continue;
}
s[i]=char(j);
break;
}
}
}
for(int i=1;i<=n;i++)
{
cout<<s[i];
}
cout<<endl;
}
return 0;
}
时间超限 0 看看有么有优化