#include <bits/stdc++.h>

using namespace std;
int kretanje[600][600];
int mark[600][600];
int dim,m;
vector <int> g[600][600];
bool f=false;
void dfs(int x,int y,int skok1,int skok2,int k)
{
    mark[x][y]=1;
    if(x>dim || y>dim)return ;
    if(x==dim && y==dim)
    {
        if(f==false)
        {
            printf("%d%d", skok1,skok2);
            f=true;
            return ;
        }
    }

    bool j=false;
    for(int xt:g[x][y])
    {

        if(xt==1)if(!mark[x][y-1]){j=true; dfs(x,y-1,0,0,k); }
        if(xt==2)if(!mark[x+1][y]){j=true; dfs(x+1,y,0,0,k); }
        if(xt==3)if(!mark[x][y+1]){ j=true;dfs(x,y+1,0,0,k); }
        if(xt==4)if(!mark[x-1][y]){ j=true;dfs(x-1,y,0,0,k); }
    }
    if(j==false)
    {
        dfs(x+k,y+k,x,y,k);
        dfs(x-k,y+k,x,y,k);
        dfs(x+k,y-k,x,y,k);
        dfs(x-k,y-k,x,y,k);
    }
}
int main()
{

    scanf("%d%d", &dim, &m);
    kretanje[1][1]=1;
    kretanje[dim][dim]=1;
    for(int i=1;i<=dim;i++)
    {
        for(int j=1;j<=dim;j++)
        {
            char c;
            scanf("%c", c);
            if(c=='.'){

                kretanje[i][j]=1;
            }else
            if(!((i==1 && j==1 )||(i==dim && j==dim)))
               {
                   kretanje[i][j]=0;
               }
        }
    }
    for(int i=1;i<=600;i++)
    {
        for(int j=1;j<=600;j++)
        {
            if(kretanje[i][j-1])g[i][j].push_back(4);
            if(kretanje[i][j+1])g[i][j].push_back(2);
            if(kretanje[i-1][j])g[i][j].push_back(1);
            if(kretanje[i+1][j])g[i][j].push_back(3);

        }
    }
    if(m==1)
    {
        int azur=0;
        int limit1=1;
        int limit2=dim;
        while(limit1<=limit2)
        {

            int mid=(limit1+limit2)/2;
            dfs(1,1,0,0,mid);
            if(mark[dim][dim]==1){limit1=mid+1; azur=mid;}else
                {
                    limit2=mid-1;
                }
            for(int i=1;i<=dim;i++)
            {
                for(int j=1;j<=dim;j++)
                {
                    mark[i][j]=0;
                }
            }
        }
    }else
    cout<<-1<<endl;

}