#include<iostream>
#include<queue>
using namespace std;
char a[2001][2001],x,y,d,e,ans;
int x1[]={0,1,0,-1};
int y1[]={1,0,-1,0};
int b[2001][2001];
bool vis[2001][2001],flag;
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
if(a[i][j]=='m'){
x=i;y=j;
}
}
queue<int>xx;
queue<int>yy;
xx.push(x);
yy.push(y);
vis[x][y]=1;
while(!xx.empty()){
for(int i=0;i<4;i++){
int dx=xx.front()+x1[i];
int dy=yy.front()+y1[i];
if(!vis[dx][dy]&&dx>=1&&dx<=n&&dy>=1&&dy<=m&&a[dx][dy]!='#'){
xx.push(dx);
yy.push(dy);
vis[dx][dy]=1;
b[dx][dy]=b[xx.front()][yy.front()]+1;
if(a[dx][dy]=='d'){
flag=1;
break;
}
}
}
xx.pop();
yy.pop();
if(flag)
break;
}
if(!flag)
cout<<"No Way!";
else
cout<<b[d][e];
return 0;
}