#include #include #include using namespace std; int n,m,T; char st[1010],ans[1010]; int num[510]; int f[510][1010]; void init() { scanf("%d%d",&n,&m); scanf("%s",st+1); for (int i=1;i<=n/2;i++) if (st[i]==st[i+n/2]) num[i]=2; else num[i]=1; } void work() { memset(f,0,sizeof(f)); memset(ans,0,sizeof(ans)); f[n/2+1][0]=1; for (int i=n/2;i>=1;i--) for (int j=n-m;j>=0;j--) { f[i][j]|=f[i+1][j]; if (num[i]<=j) f[i][j]|=f[i+1][j-num[i]]; } if (!f[1][n-m]) printf("Impossible\n"); else { int now=n-m,head=-1; for (int i=1;i<=n/2;i++) if (st[i]==st[i+n/2]) if (st[i]=='a') if (f[i+1][now-num[i]]) { ans[++head]='a'; now-=num[i]; } else ans[++head]='b'; else if (f[i+1][now]) ans[++head]='a'; else { ans[++head]=st[i]; now-=num[i]; } else if (st[i]=='a'||st[i+n/2]=='a') if (f[i+1][now-num[i]]) { ans[++head]='a'; now-=num[i]; } else if (st[i]=='b'||st[i+n/2]=='b') ans[++head]='c'; else ans[++head]='b'; else if (f[i+1][now]) ans[++head]='a'; else { ans[++head]=min(st[i],st[i+n/2]); now-=num[i]; } printf("%s%s\n",ans,ans); } } int main() { // freopen("B.txt","w",stdout); scanf("%d",&T); while (T--) { init(); work(); } return 0; }