#include using namespace std; int rd() { int rx=0,fx=1;char c=getchar(); while(c<48||c>57) { if(c=='-') fx=-1; c=getchar(); } while(c>=48&&c<=57) { rx=rx*10+c-48; c=getchar(); } return rx*fx; } const int N=60; int T,m,n,zpd; int h[N][N],e[N][N],mat[N],ans[N],vis[N]; char a[N],b[N]; bool cmp(const int &x,const int &y) { return mat[x] prq; bool find(int x) { int i; vis[x]=1; for(i=1;i<=n;i++) { if(!e[x][i]) continue; if(mat[i]==0||(vis[mat[i]]==0&&find(mat[i])==1)) { mat[i]=x; return 1; } } return 0; } void dfs(int xh) { if(xh==n+1) { zpd=1; return ; } int i; for(i=1;i<=n&&zpd==0;i++) { if(e[xh][i]&&vis[i]==0) { vis[i]=1; ans[xh]=i; dfs(xh+1); vis[i]=0; } } } int main() { int i,j,k; T=rd(); while(T--) { m=rd();n=rd(); //printf("P%d %d\n",m,n); memset(h,0,sizeof(h)); memset(e,0,sizeof(e)); memset(mat,0,sizeof(mat)); memset(vis,0,sizeof(vis)); for(i=1;i<=m;i++) { scanf("%s",a+1); scanf("%s",b+1); for(j=1;j<=n;j++) { for(k=1;k<=n;k++) { if(a[j]==b[k]) h[j][k]++; } } } for(i=1;i<=n;i++) for(j=1;j<=n;j++) { if(h[i][j]==m) e[i][j]=1; } bool pd=1; for(i=1;i<=n;i++) { memset(vis,0,sizeof(vis)); if(find(i)==0) { pd=0;break; } } if(pd==0) puts("-1"); else { zpd=0; memset(vis,0,sizeof(vis)); dfs(1); for(i=1;i<=n;i++) { if(i!=n) printf("%d ",ans[i]); else printf("%d\n",ans[i]); } } } return 0; }