#include <iostream>
#include <queue>
#include <vector>
#include <string>
#define MAKS (500)
#define MAKS2 (250000)
using namespace std;


//vector <string> mat[MAKS];
char mat[MAKS][MAKS];
int cntMine[MAKS][MAKS];
bool visited[MAKS][MAKS];
int n,m;
pair<int,int> A,B;

void dfs(int x,int y,int curr)
{
    if(x<0 || y<0 || x>=n || y>=n)
        return;
    if(curr+(mat[x][y]=='X')>=cntMine[x][y])
        return;
    cntMine[x][y]=curr+(mat[x][y]=='X');
    curr=cntMine[x][y];
    dfs(x+1,y,curr);
    dfs(x-1,y,curr);
    dfs(x,y+1,curr);
    dfs(x,y-1,curr);
    return;
}

bool editMat(int k)
{
    int x;
    x=max(0,A.first-k);
    for(;x<=A.first+k;x++)
    {
        int y=min(A.second+k,n-1);
        mat[x][y]='.';
    }
    x=max(0,A.first-k);
    for(;x<=A.first+k;x++)
    {
        int y=max(0,A.second-k);
        mat[x][y]='.';
    }
    int y;
    y=max(0,A.second-k);
    for(;y<=A.first+k;y++)
    {
        int x=min(A.first+k,n-1);
        mat[x][y]='.';
    }
    y=max(0,A.second-k);
    for(;y<=A.first+k;y++)
    {
        int x=max(0,A.first-k);
        mat[x][y]='.';
    }
    dfs(A.first,A.second,0);
    if(cntMine[B.first][B.second]<=0)
        return 1;
    return 0;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin>>n>>m;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            cin>>mat[i][j];
            if(mat[i][j]=='A')
            {
                A.first=i;
                A.second=j;
            }
            if(mat[i][j]=='B')
            {
                B.first=i;
                B.second=j;
            }
            cntMine[i][j]=MAKS2;
        }
        //scanf("%s",&mat[i]);
    }
    //make_cntMine(B.first,B.second);
    //bfs();
    dfs(A.first,A.second,0);
    if(cntMine[B.first][B.second]==0)
        cout<<0;
    else
    {
        switch(m)
        {
        case 1:
            int k;
            for(k=1;!editMat(k);k++)
            {

            }
            cout<<k<<endl;
            break;
        case 2:
            cout<<3<<endl;
            break;
        }
    }

    return 0;
}