#include #include using namespace std; int n,m; char z1[100][122],z2[120][120]; int f; int x[120]; int p[120],use[120]; void dfs(int k){ if(k==m+1){ for(int i=1;i<=m;i++)printf("%d%c",p[i],i==m?'\n':' '); f=1; return; } for(int i=1;i<=m;i++){ if(!use[i]){ int j; for(j=1;j<=n;j++){ if(z2[j][i]!=z1[j][k])break; } if(j==n+1){ p[k]=i; use[i]=1; dfs(k+1); if(f)return; p[k]=0; use[i]=0; } } } } int main () { int j,t,_t; scanf("%d",&t); for(_t=1;_t<=t;_t++){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++)use[i]=0; f=0; for(int i=1;i<=n;i++){ scanf("%s%s",z1[i]+1,z2[i]+1); for(j=0;j<=26;j++)x[j]=0; for(j=1;j<=m;j++){ x[z1[i][j]-'a']++; x[z2[i][j]-'a']--; } for(j=0;j<=26;j++)if(x[j]!=0)f=-1; } if(f==-1){ printf("-1\n"); continue; } dfs(1); if(f==0)printf("-1\n"); } return 0; }