#include <bits/stdc++.h>

using namespace std;

char niz[505][505];
int dostizna[505][505];
int niz2[505][505];
bool pronasao = false, dalje = true;
int b1,b2;

void pronadji(int a, int b, int n)
{
    if(pronasao) return;
    if(dostizna[a][b]!=-1) return;
    dostizna[a][b]=1;
    if(a==0 || b==0 || a>n || b>n)
    {
        dostizna[a][b]=0;
        return;
    }
    if((a+1==b1 && b==b2) || (a-1==b1 && b==b2) || (a==b1 && b+1==b2) || (a+1==b1 && b-1==b2))
    {
        pronasao = true;
        return;
    }
    if(niz[a+1][b]=='.')
    {
        pronadji(a+1, b, n);
    }
    else dostizna[a+1][b]=0;
    if(niz[a-1][b]=='.')
    {
        pronadji(a-1, b, n);
    }
    else dostizna[a-1][b]=0;
    if(niz[a][b+1]=='.')
    {
        pronadji(a, b+1, n);
    }
    else dostizna[a][b+1]=0;
    if(niz[a+1][b]=='.')
    {
        pronadji(a, b-1, n);
    }
    else dostizna[a-1][b-1]=0;
}

void funkcija(int a, int b, int n, int& q, int& w, int g)
{
    if(!dalje) return;
    if(a==0 || b==0 || a>g || b>g) return;
    if(niz2[a][b]!=-1) return;
    niz2[a][b] = n;
    if(dostizna[a][b]==1)
    {
        q = a;
        w = b;
        dalje = false;
        return;
    }
    funkcija(a+1, b, n+1, q, w, g);
    funkcija(a-1, b, n+1, q, w, g);
    funkcija(a, b+1, n+1, q, w, g);
    funkcija(a, b-1, n+1, q, w, g);
}

int main()
{
    int n, m, a1, a2, c1, c2;
    int o = 1;
    cin >> n >> m;
    for(int i = 1; i<=n; i++)
    {
            cin >> niz[i];
            for(int j = n; j>=1; j--)
            {
                niz[i][j]=niz[i][j-1];
                if(niz[i][j]=='A')
                {
                    a1=i; a2=j;
                }
                else if(niz[i][j]=='B')
                {
                    b1=i; b2=j;
                }
            }
    }
    for(int i = 1; i<=n; i++)
    {
        for(int j = 1; j<=n; j++)
        {
            dostizna[i][j] = -1;
        }
    }
    for(int i = 1; i<=n; i++)
    {
        for(int j = 1; j<=n; j++)
        {
            niz2[i][j] = -1;
        }
    }
    /*for(int i = 1; i<=n; i++)
    {
        for(int j = 1; j<=n; j++)
        {
            cout << niz[i][j];
        }
    }*/
    pronadji(a1, a2, n);
    if(pronasao)
    {
        cout << -1;
        return 0;
    }
    funkcija(b1, b2, 0, c1, c2, n);
    while(true)
    {
        for(int i = 1; i<=n; i++)
        {
            for(int j = 1; j<=n; j++)
            {
                dostizna[i][j] = -1;
            }
        }
        for(int i = c2-o; i<=c2+o; i++)
        {
            for(int j = c1-o; j<=c1+o; j++)
            {
                dostizna[i][j] = -1;
            }
        }
        pronadji(a1, a2, n);
        if(pronasao)
        {
            cout << o;
            return 0;
        }
        o++;
    }
    for(int i = 1; i<=n; i++)
    {
        for(int j = 1; j<=n; j++)
        {
            if(dostizna[i][j] == -1)
                dostizna[i][j]=0;
        }
    }
    return 0;
}