/*
 * generated by github.com/calgagi/cp_gen
 * file: D.cpp
 * time: Wed Feb 10 09:47:49 2021
 */

#include <bits/stdc++.h>
using namespace std;
const string CP_GEN_FILE = "D";

namespace cp {

}

/* ===== BEGIN USER CODE ===== */

#define ll long long
#define ld long double

void solve() {
    int n, m;
    cin >> n >> m;
    vector<vector<char>> adj(n, vector<char>(n));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> adj[i][j];
        }
    }

    // if odd, any edge will do
    if ((m & 1)) {
        cout << "YES" << endl;
        for (int i = 1; i <= m+1; i++) {
            cout << ((i & 1) ? 1 : 2) << " ";
        }
        cout << endl;
        return;
    }

    // if we have a cycle of length 2 of same letter, we are good
    for (int i = 0; i < n; i++) {
        for (int j = i+1; j < n; j++) {
            if (adj[i][j] == adj[j][i]) {
                cout << "YES" << endl;
                for (int k = 1; k <= m+1; k++) {
                    cout << ((k & 1) ? i+1 : j+1) << " ";
                }
                cout << endl;
                return;
            }
        }
    }

    vector<array<int, 2>> in(n, {-1, -1}), out(n, {-1, -1});
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (i == j) continue;
            in[j][adj[i][j] - 'a'] = i;
            out[i][adj[i][j] - 'a'] = j;
        }
    }

    int l = -1, x = -1, r = -1;
    for (int i = 0; i < n; i++) {
        if (in[i][0] != -1 && out[i][0] != -1) {
            l = in[i][0], x = i, r = out[i][0];
            break;
        }
        else if (in[i][1] != -1 && out[i][1] != -1) {
            l = in[i][1], x = i, r = out[i][1];
            break;
        }
    }
   
    if (l != -1) {
        cout << "YES" << endl;
        vector<int> ans(m+1, 0);
        for (int i = m/2, j = 0; ~i; i--, j++) {
            ans[i] = ((j & 1) ? l+1 : x+1);
        }
        for (int i = m/2 + 1; i <= m; i++) {
            ans[i] = (ans[i-1] == x+1 ? r+1 : x+1);
        }
        for (int i = 0; i <= m; i++) {
            cout << ans[i] << " ";
        }
        cout << endl;
        return;
    }

    cout << "NO" << endl;
    return;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    srand(chrono::steady_clock::now().time_since_epoch().count());

    /* FILE *IN = freopen((CP_GEN_FILE + string(".in")).c_str(), "r", stdin); */
    /* FILE *OUT = freopen((CP_GEN_FILE + string(".out")).c_str(), "w", stdout); */

    int t = 1;
    cin >> t;
    while (t--) {
        solve();
    }

    return 0;
}
