#include <bits/stdc++.h>
using namespace std;
// #define int long long
// #define double long double
// #define endl "\n"
const int MAXN = 1e3 + 7;
// const int MOD = ;
// const int INF = ;
// const double eps = ;
// const double PI = acos(-1);
// const int DIRX[] = {};
// const int DIRY[] = {};

int T;
int n, m;
char graph[MAXN][MAXN];

int samech[2];
int loopch[3];

int32_t main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin >> T;
    while (T--)
    {
        cin >> n >> m;
        for (int i = 1; i <= n; ++i)
        {
            for (int j = 1; j <= n; ++j)
            {
                cin >> graph[i][j];
            }
        }
        if (m % 2 == 1)
        {
            cout << "YES" << endl;
            for (int i = 0; i <= m; ++i)
            {
                cout << i % 2 + 1 << " ";
            }
            cout << endl;
            continue;
        }
        bool flg = false;
        for (int i = 1; i <= n; ++i)
        {
            for (int j = 1; j <= n; ++j)
            {
                if (i!= j && graph[i][j] == graph[j][i])
                {
                    samech[0] = i;
                    samech[1] = j;
                    flg = true;
                    break;
                }
            }
            if (flg)
                break;
        }
        if (flg)
        {
            cout << "YES" << endl;
            for (int i = 0; i <= m; ++i)
            {
                cout << samech[i % 2] << " ";
            }
            cout << endl;
        }
        else 
        {
            for (int i = 1; i <= n; ++i)
            {
                int cnt = 0;
                loopch[0] = i;
                for (int j = 1; j <= n; ++j)
                {
                    if (i == j)
                        continue;
                    if (cnt == 0 && graph[i][j] != graph[j][i])
                    {
                        loopch[++cnt] = j;
                    }
                    if (cnt == 1 && graph[i][j] != graph[j][i])
                    {
                        if (graph[i][loopch[1]] != graph[i][j])
                        {
                            loopch[++cnt] = j;
                            flg = true;
                            break;
                        }
                    }
                }
                if (flg)
                    break;
            }
            if (flg)
            {
                cout << "YES" << endl;
                if (m % 4 == 0)
                {
                    int ans[4] = {loopch[0], loopch[1], loopch[0], loopch[2]};
                    for (int i = 0; i <= m; ++i)
                    {
                        cout << ans[i % 4] << " ";
                    }
                    cout << endl;
                }
                else
                {
                    int ans[4] = {loopch[1], loopch[0], loopch[2], loopch[0]};
                    for (int i = 0; i <= m; ++i)
                    {
                        cout << ans[i % 4] << " ";
                    }
                    cout << endl;
                }
            }
            else 
                cout << "NO" << endl;
        }
    }
    return 0;
}