#include<bits/stdc++.h>
using namespace std;
#define N 1250
const int dx[]={1,-1,0,0,1,-1,1,-1,2,-2,0,0};
const int dy[]={0,0,1,-1,1,1,-1,-1,0,0,2,-2};
int n,ans,tim[N][N];
char s[N][N];
int main(){
scanf("%d",&n);
for(int i = 1;i <= n;++ i){
for(int j = 1;j <= n;++ j){
cin>>s[i][j];tim[i][j]=2147483647;
}
}
queue<pair<int ,int > > q;
if(s[1][1]=='*'&&s[1][n]=='*'&&s[n][1]=='*'||s[n][n]=='*'){
printf("No answer");return 0;
}
if(s[1][1]!='*')q.push(make_pair(1,1)),tim[1][1]=1;
if(s[1][n]!='*')q.push(make_pair(1,n)),tim[1][n]=1;
if(s[n][1]!='*')q.push(make_pair(n,1)),tim[n][1]=1;
while(!q.empty()){
int x=q.front().first,y=q.front().second;q.pop();
if(s[x][y]=='*')continue;
else if(s[x][y]=='A'){
for(int i=0;i<4;i++){
int xx=x+dx[i]*(s[x][y]-'A'+1),yy=y+dy[i]*(s[x][y]-'A'+1);
if(xx<1||xx>n||yy<1||yy>n||s[xx][yy]!='*'||tim[xx][yy]<=tim[x][y]+1)continue;
tim[xx][yy]=tim[x][y]+1;
q.push(make_pair(xx,yy));
}
}
else if(s[x][y]=='B'){
for(int i=8;i<12;i++){
int xx=x+dx[i]*(s[x][y]-'A'+1),yy=y+dy[i]*(s[x][y]-'A'+1);
if(xx<1||xx>n||yy<1||yy>n||s[xx][yy]!='*'||tim[xx][yy]<=tim[x][y]+1)continue;
tim[xx][yy]=tim[x][y]+1;
q.push(make_pair(xx,yy));
}
}
else{
for(int i=4;i<8;i++){
int xx=x+dx[i],yy=y+dy[i];
if(xx<1||xx>n||yy<1||yy>n||s[xx][yy]!='*'||tim[xx][yy]<=tim[x][y]+1)continue;
tim[xx][yy]=tim[x][y]+2;
q.push(make_pair(xx,yy));
}
}
}
if(tim[n][n]!=2147483647){cout<<tim[n][n];}
else{printf("No answer");}
return 0;
}
WA了4个,求大佬挑错