#include<bits/stdc++.h>
using namespace std;
struct pos{
int x,y;
}a,b;
queue<pos> q;
int n,m,s_x,s_y,e_x,e_y;
char mp[2010][2010];
bool vis[2010][2010];
int tot[2010][2010];
int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
int main(){
cin>>n>>m;
string s;
for(int i=1;i<=n;i++){
cin>>s;
for(int j=0;j<m;j++){
mp[i][j]=s[j];
if(mp[i][j]=='m'){
s_x=i,s_y=j;
}
}
}
vis[s_x][s_y]=1;
a.x=s_x,a.y=s_y;
q.push(a);
while(!q.empty()){
a=q.front();
q.pop();
if(mp[a.x][a.y]=='d'){
cout<<tot[a.x][a.y];
return 0;
}
for(int i=0;i<4;i++){
int px=dx[i]+a.x;
int py=dy[i]+a.y;
if(px<0||px>n||py<0||py>m) continue;
if(mp[px][py]=='#'||vis[px][py]==true) continue;
tot[px][py]=tot[a.x][a.y]+1;
vis[px][py]=1;
b.x=px,b.y=py;
q.push(b);
}
}
cout<<"No Way!";
return 0;
}