#include <bits/stdc++.h>

using namespace std;

int n, m;
char matra[55][55];
bool nisiBio[55][55];
int dostizna[55][55];
int cnt=0;
int brojDobrih;

void nadjiDostizne(int i, int j)
{
    if (cnt>=brojDobrih)
        return;

    if (matra[i][j-1]=='.' && nisiBio[i][j-1])
    {
        cnt++;
        dostizna[i][j-1]=true;
        nisiBio[i][j-1]=false;
        nadjiDostizne(i, j-1);
    }
    if (matra[i-1][j]=='.' && nisiBio[i-1][j])
    {
        cnt++;
        dostizna[i-1][j]=true;
        nisiBio[i-1][j]=false;
        nadjiDostizne(i-1, j);
    }
    if (matra[i][j+1]=='.' && nisiBio[i][j+1])
    {
        cnt++;
        dostizna[i][j+1]=true;
        nisiBio[i][j+1]=false;
        nadjiDostizne(i, j+1);
    }
    if (matra[i+1][j+1]=='.' && nisiBio[i+1][j+1])
    {
        cnt++;
        dostizna[i-1][j-1]=true;
        nisiBio[i+1][j+1]=false;
        nadjiDostizne(i-1, j-1);
    }
}

int main()
{
    cin>>n>>m;

    int mesto;
    for(int i=0; i<=n; i++)
    {
        for (int j=0; j<n; j++)
        {
            nisiBio[i][j]=true;
        }
    }
    int drug;
    for (int i=1; i<=n; i++)
    {
        string s;
        cin>>s;
        for (int j=1; j<=n; j++)
        {
            matra[i][j]=s[j];
            if (s[j]=='A')
                mesto=i*n+j;
            if (s[j]=='B')
                drug=i*n+j;
            if (s[j]=='A' || s[j]=='B' || s[j]=='.')
                brojDobrih++;
        }
    }
    for (int i=0; i<=n; i++)
        matra[0][i]='W';
    for (int i=0; i<=n; i++)
        matra[i][0]='W';

    nadjiDostizne(mesto/n, mesto%n);

    int ress=1000;
    for (int i=1; i<=n; i++)
    {
        for (int j=1; j<=n; j++)
        {
            int trenRes;
            if (dostizna[i][j])
            {
                trenRes=max(abs((drug/n)-i), abs((drug%n)-j));
                ress=min(trenRes, ress);
            }
        }
    }

    cout<<ress;
}