#include <bits/stdc++.h>
using namespace std;
int n,k,mx,my,ans,xy,xx;
char a[320][320];
int x[160010];
struct mi{
int x,y;
}m[160010];
int dx[4]{-1,1,0,0},dy[4]{0,0,1,-1};
void zhao(int x,int y){
for(int i=0;i<n;i++){
for(int j=0;j<k;j++)
if(i!=x&&j!=y){
if(a[i][j]==a[x][y]){
xx=i;
xy=j;
}
}
}
}
int main(){
cin>>n>>k;
for(int i=0;i<n;i++)
scanf("%s",a[i]);
for(int i=0;i<n;i++)
for(int j=0;j<k;j++)
if(a[i][j]=='@')m[1].x=i,m[1].y=j;
int head=0,tail=1; x[1]=0; a[m[1].x][m[1].y]='#';
while(head<tail){
head++;
mx=m[head].x,my=m[head].y;
ans=x[head];
for(int i=0;i<4;i++){
if(a[mx+dx[i]][my+dy[i]]!='#'&&mx+dx[i]>=0&&my+dy[i]>=0&&mx+dx[i]<n&&my+dy[i]<k){
if(a[mx+dx[i]][my+dy[i]]>='A'&&a[mx+dx[i]][my+dy[i]]<='Z'){
tail++;
x[tail]=ans+1;
zhao(mx+dx[i],my+dy[i]);
m[tail].x=xx;
m[tail].y=xy;
}
else if(a[mx+dx[i]][my+dy[i]]=='='){cout<<ans+1;return 0;}
else {
if(a[mx+dx[i]][my+dy[i]]=='.'){
tail++;
x[tail]=ans+1;
a[mx+dx[i]][my+dy[i]]='#';
m[tail].x=mx+dx[i];
m[tail].y=my+dy[i];
}
}
}
}
}
return 0;
}
this