#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define mod 1000000007
#define inf 100000000000000000
#define ar array
#define send ios::sync_with_stdio(false);
#define help cin.tie(0);
#define setpres(x) fixed<<setprecision(x)
#define all(x) (x).begin(),(x).end()
using namespace std;
template<typename A> ostream& operator<<(ostream &cout, vector<A> const &v) { for(int i=0;i<v.size();i++) cout<<v[i]<<" "; cout<<"\n";}
template<typename A,typename B> ostream& operator<<(ostream &cout, map<A,B> const &v) { for(auto x:v) cout<<x.first<<": "<<x.second<<"\n";}
template<typename A> ostream& operator<<(ostream &cout, vector<ar<A,2>> const &v) { for(int i=0;i<v.size();i++) cout<<v[i][0]<<" "<<v[i][1]<<"\n";}

string s[1000];
int32_t main()
{
    send help
    int t;
    cin>>t;
    while(t--)
    {
        int n,m;
        cin>>n>>m;
        for(int i=0;i<n;i++)
            cin>>s[i];
        bool same=0;
        int x=1,y=2,z=-1;
        vector<int> a[1000];
        vector<int> b[1000];
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(i!=j && s[i][j]==s[j][i])
                {
                    same=1;
                    x=i+1;
                    y=j+1;
                    break;
                }
                if(i!=j)
                {
                    if(s[i][j]=='a')
                        a[i].pb(j);
                    else
                        b[i].pb(j);
                }
            }
        }
        if(same || m%2)
        {
            cout<<"YES\n";
            for(int i=0;i<m+1;i++)
                cout<<(i%2==0?x:y)<<" ";
            cout<<"\n";
            continue;
        }
        for(int i=0;i<n;i++)
        {
            for(auto g:a[i])
            {
                if(!a[g].empty())
                {
                    x=i+1;
                    y=g+1;
                    z=a[g].back()+1;
                    break;
                }
            }
            for(auto g:b[i])
            {
                if(!b[g].empty())
                {
                    x=i+1;
                    y=g+1;
                    z=b[g].back()+1;
                    break;
                }
            }
        }
        if(z==-1)
        {
            cout<<"NO\n";
            continue;
        }
        assert(x!=y && y!=z);
        assert(s[x-1][y-1]==s[y-1][z-1]);
        assert(s[z-1][y-1]==s[y-1][x-1]);
        assert(s[x-1][y-1]!=s[y-1][x-1]);

        cout<<"YES\n";
        if(m==2)
            cout<<x<<" "<<y<<" "<<z<<"\n";
        else if(m%4==0)
        {
            // y -> x -> y -> z -> y
            for(int i=0;i<m+1;i++)
                cout<<(i%2==0?y:i%4==1?x:z)<<" ";
            cout<<"\n";
        }
        else
        {
            int rep=(m-6)/4+1;
            assert((m-6)%4==0);
            for(int i=0;i<2*rep+1;i++)
                cout<<(i%2==0?x:y)<<" ";
            cout<<y<<" ";
            for(int i=0;i<2*rep+1;i++)
                cout<<(i%2==0?z:y)<<" ";
            cout<<"\n";
        }
    }
}