#include <bits/stdc++.h>


using namespace std;

#define pii pair<int,int>
#define f first
#define s second

char mat[505][505];
int 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,mn=INT_MAX;
vector<pii> c,c1;

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;
}

int udaljenost(int i,int j,int x,int y){
  return max(abs(i-x),abs(j-y))-!((i-j)==(x-y));
}

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

void dfs2(int i,int j){
  visited[i][j]=2;
  c1.push_back(make_pair(i,j));
  for(int f=0;f<4;++f){
    if(good(i+dx[f],j+dy[f])){
        dfs2(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;
            }
        }
    }
   cout << -1 << endl;
    return 0;
}