#include #include #define MAXN 1000 using namespace std; void Read(int &x){ char c; while(c=getchar(),c!=EOF) if(c>='0'&&c<='9'){ x=c-'0'; while(c=getchar(),c>='0'&&c<='9') x=x*10+c-'0'; ungetc(c,stdin); return; } } int n,m,T,cases; char s[MAXN+10],ans[MAXN+10]; int f[MAXN+10][MAXN+10]; void read(){ Read(n),Read(m); scanf("%s",s+1); } void solve(){ int i,t=n>>1,j; f[t][m]=cases; for(i=t;i;i--){ for(j=m;j>=2;j--) f[i-1][j-2]=f[i][j]; if(s[i]!=s[i+t]) for(j=m;j;j--) f[i-1][j-1]=max(f[i-1][j-1],f[i][j]); else for(j=m;j>=0;j--) f[i-1][j]=max(f[i-1][j],f[i][j]); } if(f[0][0]!=cases){ puts("Impossible"); return; } int now=0; paira[10]; for(i=1;i<=t;i++){ char mic; for(mic='a';mic==s[i]||mic==s[i+t];mic++); a[0]=pair(mic,2); if(s[i]==s[i+t]){ a[1]=pair(s[i],0); sort(a,a+2); if(f[i][now+a[0].second]==cases) ans[i]=a[0].first,now+=a[0].second; else ans[i]=a[1].first,now+=a[1].second; } else{ a[1]=pair(s[i],1); a[2]=pair(s[i+t],1); sort(a,a+3); if(f[i][now+a[0].second]==cases) ans[i]=a[0].first,now+=a[0].second; else if(f[i][now+a[1].second]==cases) ans[i]=a[1].first,now+=a[1].second; else ans[i]=a[2].first,now+=a[2].second; } } ans[t+1]=0; printf("%s%s\n",ans+1,ans+1); } int main() { Read(T); for(cases=1;cases<=T;cases++){ read(); solve(); } }