#include #define fi first #define se second #define pb push_back #define SZ(x) ((int)x.size()) #define L(i,u) for (register int i=head[u]; i; i=nxt[i]) #define rep(i,a,b) for (register int i=(a); i<=(b); i++) #define per(i,a,b) for (register int i=(a); i>=(b); i--) using namespace std; typedef long long ll; typedef unsigned int ui; typedef pair Pii; typedef vector Vi; template inline void read(T &x){ x=0; char c=getchar(); int f=1; while (!isdigit(c)) {if (c=='-') f=-1; c=getchar();} while (isdigit(c)) {x=x*10+c-'0'; c=getchar();} x*=f; } template inline void umin(T &x, T y){x=x inline void umax(T &x, T y){x=x>y?x:y;} inline ui R() { static ui seed=416; return seed^=seed>>5,seed^=seed<<17,seed^=seed>>13; } const int N = 233; int n,m,cnt[55][55];bool vis[55]; void solve(){ memset(vis,0,sizeof(vis));static int ans[55]; rep(i,1,m){ bool ok=0; rep(j,1,m)if(!vis[j]&&cnt[i][j]==n){ vis[j]=1;ok=1;ans[i]=j;break; } if(!ok){puts("-1");return;} } rep(i,1,m){printf("%d",ans[i]);if(i+1<=m)putchar(' ');} puts(""); } int main() { int T;read(T); while(T--){ read(n);read(m); memset(cnt,0,sizeof(cnt)); rep(t,1,n){ static char a[55],b[55]; scanf("%s%s",a+1,b+1); rep(i,1,m)rep(j,1,m)cnt[i][j]+=a[i]==b[j]; } solve(); } return 0; }