#include <bits/stdc++.h>
#define xx first
#define yy second
#define mp make_pair
using namespace std;
long long n;
void dfs1(pair<long long,long long> sada,vector< vector<bool> > &gde,vector< vector<char> > &mapa,vector<pair<long long,long long> > &mogu){
    if(sada.xx>=n || sada.xx<0 || sada.yy>=n || sada.yy<0) return;
    if(mapa[sada.xx][sada.yy]=='X') return;
    if(gde[sada.xx][sada.yy]) return;
    gde[sada.xx][sada.yy]=true;
    mogu.push_back(sada);
 //   cout<<sada.xx<<" "<<sada.yy<<endl;
    dfs1(mp(sada.xx+1,sada.yy),gde,mapa,mogu);
    dfs1(mp(sada.xx-1,sada.yy),gde,mapa,mogu);
    dfs1(mp(sada.xx,sada.yy+1),gde,mapa,mogu);
    dfs1(mp(sada.xx,sada.yy-1),gde,mapa,mogu);
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    long long m;
    cin>>n>>m;
    vector<char> pom(n);
    vector< vector<char> > mapa(n,pom);
    pair<long long,long long> a;
    pair<long long,long long> b;
    for(long long i=0;i<n;i++){
        for(long long j=0;j<n;j++){
            cin>>mapa[i][j];
            if(mapa[i][j]=='A'){
                a=mp(i,j);
            }
            if(mapa[i][j]=='B'){
                b=mp(i,j);
            }
        }
    }
    vector<bool> pom2(n,false);
    vector< vector<bool> > gdeb(n,pom2);
    vector< vector<bool> > gdea(n,pom2);
    vector< pair<long long,long long> > mogua;
    vector< pair<long long,long long> > mogub;
    dfs1(b,gdeb,mapa,mogub);
    dfs1(a,gdea,mapa,mogua);
    long long res=LLONG_MAX;
    for(long long i=0;i<mogua.size();i++){
        for(long long j=0;j<mogub.size();j++){
            long long kolko;
            pair<long long,long long> jedan=mogua[i];
            pair<long long,long long> dva=mogub[j];
            if(m==1){
                if(jedan.xx==dva.xx){
                    kolko=abs(jedan.yy-dva.yy)-1;
                }else if(jedan.yy==dva.yy){
                    kolko=abs(jedan.xx-dva.xx)-1;
                }else{
                    if(abs(jedan.xx-dva.xx)-1!=abs(jedan.yy-dva.yy)-1)
                    kolko=max(abs(jedan.xx-dva.xx)-1,abs(jedan.yy-dva.yy)-1);
                    else
                    kolko=max(abs(jedan.xx-dva.xx)-1,abs(jedan.yy-dva.yy)-1)+1;
                }
            }else{
                if(jedan.xx==dva.xx){
                    kolko=(abs(jedan.yy-dva.yy)-2)/2+1;
                }else if(jedan.yy==dva.yy){
                    kolko=(abs(jedan.xx-dva.xx)-2)/2+1;
                }else{
                    if(abs(jedan.xx-dva.xx)-1!=abs(jedan.yy-dva.yy)-1){
                        long long pox=(abs(jedan.xx-dva.xx)-2)/2+1;
                        long long poy=(abs(jedan.yy-dva.yy)-2)/2+1;
                        if(pox>poy){
                            kolko=pox;
                        }else if(poy>pox){
                            kolko=poy;
                        }else{
                            kolko=pox+1;
                        }
                    }else{
                        kolko=(abs(jedan.xx-dva.xx)-1)/2+1;
                    }
                }
            }
            res=min(res,kolko);
        }
    }
    cout<<(res==0 ? -1:res);
    return 0;
}