#include"bits/stdc++.h"
using namespace std;
int n,xx,yy,mn[105][105],d[4][2]={{1,0},{0,-1},{-1,0},{0,1}},ans=0x3f3f3f3f;
char mp[105][105];
struct node{
int x,y,cnt,dire;
}now;
queue<node>q;
void bfs(int xx,int yy){
memset(mn,0x4f,sizeof(mn));
mn[xx][yy]=0;
for (int i=0;i<4;i++)
q.push({xx,yy,0,i});
while (q.size()){
now=q.front();q.pop();
if(mp[now.x][now.y]=='B'){
ans=min(ans,now.cnt);
continue;
}
for (int i=0;i<4;i++){
int tx=now.x+d[i][0],ty=now.y+d[i][1];
if(tx>0&&tx<=n&&ty>0&&ty<=n&&mp[tx][ty]!='x'&&mn[tx][ty]>now.cnt+(abs(i-now.dire)&1)){
mn[tx][ty]=now.cnt+(abs(i-now.dire)&1);
q.push({tx,ty,mn[tx][ty],i});
}
}
}
}
signed main(){
std::cin.tie(0);
std::cout.tie(0);
std::ios::sync_with_stdio(0);
cin>>n;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++){
cin>>mp[i][j];
if(mp[i][j]=='A')
xx=i,yy=j;
}
bfs(xx,yy);
cout<<(ans==0x3f3f3f3f?-1:ans);
return 0;
}