#include<bits/stdc++.h>
using namespace std;
char a[2001][2001];
struct text{
int x,y;
};
int d[2001][2001],n,m,sx,sy;
bool v[2001][2001];
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
void bfs(){
queue<text> q;
q.push({sx,sy});
d[sx][sy]=0;
v[sx][sy]=1;
while(!q.empty()){
text t=q.front();
q.pop();
for (int i = 0; i < 4; i ++ ){
int nx=t.x+dx[i];
int ny=t.y+dy[i];
if(nx>=0&&nx<n&&ny>=0&&ny<m&&!v[nx][ny]){
q.push({nx,ny});
d[nx][ny]=d[t.x][t.y]+1;
v[nx][ny]=1;;
if(a[nx][ny]=='d'){
cout << d[nx][ny];
return;
}
}
}
}
}
int main()
{
cin>>n>>m;
for (int i = 0; i < n; i ++ ){
for (int j = 0; j < m; j ++ ){
cin>>a[i][j];
if(a[i][j]=='m') sx=i,sy=j;
if(a[i][j]=='#') v[i][j]=1;
}
}
bfs();
return 0;
}