#include using namespace std; set se[25][55]; bool vis[55]; char s[25][55],ss[25][55]; int main() { int T,n,m; scanf("%d",&T); while(T--) { memset(vis,false,sizeof vis); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) se[i][j].clear(); for(int i=1;i<=n;i++) scanf("%s%s",s[i]+1,ss[i]+1); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) for(int k=1;k<=m;k++) if(s[i][j]==ss[i][k]) se[i][j].insert(k); } /*for(int i=1;i<=n;i++) for(int j=1;j<=m;j++,printf("\n")) for(auto it:se[i][j]) { printf("%d ",it); }*/ vector vec; bool ff=true; for(int j=1;j<=m;j++) { map ma; for(int i=1;i<=n;i++) for(auto it:se[i][j]) ma[it]++; bool f=false; for(auto it:ma) { if(vis[it.first]) continue; if(it.second==n) { vec.push_back(it.first); vis[it.first]=true; f=true; break; } } if(!f) { printf("%d\n",-1); ff=false; break; } } if(!ff) continue; for(int i=0;i