#include #include #include #include #include using namespace std; vector count(string s) { vector res(26); for (int i = 0; i < s.size(); ++i) { res[s[i] - 'a'] += 1; } return res; } vector cand(string s) { vector res(26); for (int i = 0; i < s.size(); ++i) { res[s[i] - 'a'] |= 1LL<> N >> M; string q, r; vector valid(M, (1LL<> q; cin >> r; if (count(q) != count(r)) { fail = true; continue; } vector cc = cand(r); for (int j = 0; j < M; ++j) { valid[j] &= cc[q[j]-'a']; } } if (fail) { cout << -1 << endl; return; } vector used(M, false); vector res; for (int i = 0; i < M; ++i) { for (int j = 0; j < M; ++j) { if (((valid[i] >> j)&1) && !used[j]) { res.push_back(j + 1); used[j] = true; break; } } } if (res.size() < M) { cout << -1 << endl; return; } cout << res[0]; for (int i = 1; i < M; ++i) { cout << ' ' << res[i]; } cout << endl; } int main(void) { int T; cin >> T; for (int i = 1; i <= T; ++i) { process(); } return 0; }