using namespace std;
const int N=60;
typedef pair[HTML_REMOVED] PII;
vector[HTML_REMOVED] dot1,dot2;
int n,m;
char g[N][N];
int st[N][N];
int dx[4]={0,1,-1,0},dy[4]={1,0,0,-1};
void dfs(int x,int y,vector[HTML_REMOVED]& dot)
{
int a,b;
if(!st[x][y]) return;
st[x][y]=0;
dot.push_back({x,y});
for(int i=0;i<4;i++)
{
a=x+dx[i],b=y+dy[i];
if(a>=0&&a[HTML_REMOVED]=0&&b<m&&st[a][b])
{
dfs(a,b,dot);
}
}
}
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++){
cin>>g[i][j];
if(g[i][j]=='X') st[i][j]=1;
}
int cnt=0;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(!cnt&&st[i][j]){
dfs(i,j,dot1);
cnt++;
}
else if(cnt&&st[i][j]){
dfs(i,j,dot2);
}
}
int res=999;
for(int i=0;i<int(dot1.size());i++)
for(int j=0;j<int(dot2.size());j++)
{
res=min(abs(dot1[i].first-dot2[j].first)+abs(dot1[i].second-dot2[j].second)-1,res);
}
cout<<res<<endl;
return 0;
}