#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n, m;
    cin >> n >> m;
    char c[n][n];
    int Ai, Aj, Bi, Bj;
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            cin >> c[i][j];
            if(c[i][j] == 'A')
            {
                Ai = i;
                Aj = j;
            }

            else if(c[i][j] == 'B')
            {
                Bi = i;
                Bj = j;
            }
        }
    }

    if(Ai > Bi)
    {
        swap(Ai, Bi);
        swap(Aj, Bj);
    }

    if(Aj < Bj)
    {
        int dp[n][n];

        dp[Ai][Aj] = 0;
        for(int i = Ai+1; i <= Bi; i++)
            dp[i][Aj] = dp[i-1][Aj]+(c[i][Aj] == 'X');
        for(int j = Aj+1; j <= Bj; j++)
            dp[Ai][j] = dp[Ai][j-1]+(c[Ai][j] == 'X');

        for(int i = Ai+1; i <= Bi; i++)
        {
            for(int j = Aj+1; j <= Bj; j++)
            {
                dp[i][j] = min(dp[i-1][j], dp[i][j-1])+(c[i][j] == 'X');
            }
        }

        int j = Bj, i = Ai, x = 0, y = 0;
        while(i > Ai && j > Aj)
        {
            if(dp[i][j-1] < dp[i-1][j])
            {
                j--;
                x++;
            }

            else if(dp[i-1][j] < dp[i][j-1])
            {
                i--;
                y++;
            }

            else if(dp[i-1][j] == dp[i][j-1])
            {
                if(x > y)
                {
                    y++;
                    i--;
                }
                else
                {
                    x++;
                    i--;
                }
            }
        }

        if(j > Aj)
            x += dp[Ai][j];
        else if(i > Ai)
            x += dp[i][Aj];

//        for(int i = Ai; i <= Bi; i++)
//        {
//            for(int j = Aj; j <= Bj; j++)
//            {
//                cout << dp[i][j] << " ";
//            }
//            cout << endl;
//        }

        cout << max(x, y)/m;

    }

}