#include <iostream>

using namespace std;


char mat[505][505];
bool visited[505][505];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
int n,m,pos_x,pos_y,b_x,b_y;

bool good(int i,int j){
  if(i>=n || j>=n || i<0 || j<0 || visited[i][j] || mat[i][j]=='X'){
    return false;
  }
  return true;
}

void dfs(int i,int j){
  visited[i][j]=true;
  for(int f=0;f<4;++f){
    if(good(i+dx[f],j+dy[f])){
        dfs(i+dx[f],j+dy[f]);
    }
  }
}

int main()
{
    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'){
                pos_x=i;
                pos_y=j;
            }
            if(mat[i][j]=='B'){
                b_x=i;
                b_y=j;
            }
        }
    }
    dfs(pos_x,pos_y);
   /* for(int i=0;i<n;++i){
        for(int j=0;j<n;++j){
            cout << visited[i][j] << " ";
        }
        cout << endl;
    }*/
    if(visited[b_x][b_y]){
        cout << -1 << endl;
    }else{
      cout << 1;
    }
    /*dfs(b_x,b_y);
      for(int i=0;i<n;++i){
        for(int j=0;j<n;++j){
            cout << visited[i][j] << " ";
        }
        cout << endl;
    }*/
    return 0;
}