#请大肾教教我如何从40分达到100分 #教我者我都关注!!!?
#include<bits/stdc++.h>
using namespace std;
int n,dxa[4]={-1,0,0,1},dya[4]={0,-1,1,0},dxb[4]={-2,0,0,2},dyb[4]={0,-2,2,0},dxc[4]={1,1,-1,-1},dyc[4]={-1,-1,-1,1},f=1205;
char mmap[1205][1205];
bool flag[1205][1205];
void dfs(int x,int y,int sum){
if(x==n&&y==n){
f=min(f,sum);
return;
}
if(mmap[x][y]=='A'){
for(int i=0;i<4;i++){
int tmpx=x+dxa[i];
int tmpy=y+dya[i];
if(mmap[tmpx][tmpy]=='*'||flag[tmpx][tmpy]==1)continue;
flag[tmpx][tmpy]=1;
dfs(tmpx,tmpy,sum+1);
flag[tmpx][tmpy]=0;
}
}
else if(mmap[x][y]=='B'){
for(int i=0;i<4;i++){
int tmpx=x+dxb[i];
int tmpy=y+dyb[i];
if(mmap[tmpx][tmpy]=='*'||flag[tmpx][tmpy]==1)continue;
flag[tmpx][tmpy]=1;
dfs(tmpx,tmpy,sum+1);
flag[tmpx][tmpy]=0;
}
}
else if(mmap[x][y]=='C'){
for(int i=0;i<4;i++){
int tmpx=x+dxc[i];
int tmpy=y+dyc[i];
if(mmap[tmpx][tmpy]=='*'||flag[tmpx][tmpy]==1)continue;
flag[tmpx][tmpy]=1;
dfs(tmpx,tmpy,sum+2);
flag[tmpx][tmpy]=0;
}
}
return;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>mmap[i][j];
}
}
dfs(1,1,0);
if(f==1205)cout<<"No answer"<<endl;
else cout<<f<<endl;
return 0;
}