#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair <int, int> pin;

const int N = 1005;
const ll P = 998244353LL;

int T, n, m, ab[N], ba[N];
char s[N][N];

template <typename T>
inline void read(T &X) {
    char ch = 0; T op = 1; 
    for (X = 0; ch > '9' || ch < '0'; ch = getchar())
        if (ch == '-') op = -1;
    for (; ch >= '0' && ch <= '9'; ch = getchar())
        X = (X * 10) + ch - '0';
    X *= op;
}

int main() {
#ifndef ONLINE_JUDGE
    freopen("sample.in", "r", stdin);
    clock_t st_clock = clock();
#endif

    read(T);
    for (; T--; ) {
        read(n), read(m);
        for (int i = 1; i <= n; i++) scanf("%s", s[i] + 1), ab[i] = ba[i] = 0;
        if (n == 2 && s[1][2] != s[2][1]) {
            if (m & 1) {
                puts("YES");
                printf("1");
                for (int i = 1; i <= m; i++) printf(" %d", (i % 2) + 1);
                printf("\n");
            } else puts("NO");
            continue;
        }
        puts("YES");
        bool flag = 0;
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                if (j == i) continue;
                if (s[i][j] == s[j][i]) {
                    flag = 1;
                    for (int k = 1; k <= m + 1; k++)
                        printf("%d%c", (k & 1) ? i : j, " \n"[k == m + 1]);
                    break;
                }
                if (s[i][j] == 'a' && s[j][i] == 'b') ab[i] = j;
                else ba[i] = j;
            }
            if (flag) break;
        }
        if (!flag) {
            int pos = 0;
            for (int i = 1; i <= n; i++) {
                if (ab[i] != 0 && ba[i] != 0) {
                    pos = i;
                    break;
                }
            }
            if (m & 1) {
                printf("%d", pos);
                for (int i = 1; i <= m; i++) printf(" %d", (i & 1) ? ab[pos] : pos);
                printf("\n");
            } else {
                m /= 2;
                if (m & 1) {
                    printf("%d", ab[pos]);
                    for (int i = 1; i <= m; i++) {
                        if (i & 1) printf(" %d %d", pos, ba[pos]);
                        else printf(" %d %d", pos, ab[pos]);
                    }
                    printf("\n");
                } else {
                    printf("%d", pos);
                    for (int i = 1; i <= m; i++) printf(" %d", (i & 1) ? ab[pos] : pos);
                    for (int i = 1; i <= m; i++) printf(" %d", (i & 1) ? ba[pos] : pos);
                    printf("\n");
                }
            }
        }
    }

#ifndef ONLINE_JUDGE
    clock_t ed_clock = clock();
    printf("time = %f ms\n", (double)(ed_clock - st_clock) / CLOCKS_PER_SEC * 1000);
#endif
    return 0;
}