#include #include #include #include #include #include using namespace std; char c[1005]; char d[1005]; bool dp[505][1005]; int main() { int t; cin>>t; while(t--){ int n,m; scanf("%d%d",&n,&m); scanf("%s",c); for(int i=n;i>=1;i--) c[i]=c[i-1]; for(int i=0;i<=m;i++) dp[n/2+1][i]=0; dp[n/2+1][m]=1; for(int i=n/2;i>=1;i--){ for(int j=0;j<=m;j++){ dp[i][j]=0; if(c[i]==c[n/2+i]){ if(j+2<=m&&dp[i+1][j+2]) dp[i][j]=1; if(dp[i+1][j]) dp[i][j]=1; } else{ if(j+1<=m&&dp[i+1][j+1]) dp[i][j]=1; if(j+2<=m&&dp[i+1][j+2]) dp[i][j]=1; } } } if(dp[1][0]==0) printf("Impossible\n"); else{ int no=0; for(int i=1;i<=n/2;i++){ if(c[i]==c[i+n/2]){ char ma='z'; int f=0; if(no+2<=m&&dp[i+1][no+2]){ if(c[i]=='a'){ ma='b'; } else{ ma='a'; } f=2; } if(dp[i+1][no]){ if(ma>c[i]){ f=0; ma=c[i]; } } d[i]=d[i+n/2]=ma; no+=f; } else{ char ma='z'; int f=0; if(no+2<=m&&dp[i+1][no+2]){ char x=min(c[i],c[i+n/2]); char y=max(c[i],c[i+n/2]); if(x!='a') ma='a'; else{ if(y=='b') ma='c'; else ma='b'; } f=2; } if(no+1<=m&&dp[i+1][no+1]){ if(ma>min(c[i],c[n/2+i])){ ma=min(c[i],c[n/2+i]); f=1; } } d[i]=d[i+n/2]=ma; no+=f; } } for(int i=1;i<=n;i++) printf("%c",d[i]); printf("\n"); } } }