#include<bits/stdc++.h>
using namespace std;
char mapp[2010][2010];
int vis[2010][2010]={0};
int d[2010][2010]={0};
const int dx[]={1,-1,0,0};
const int dy[]={0,0,1,-1};
int n,m;
int sx,sy,ex,ey;
int bfs(int x,int y)
{
queue<int> qx,qy;
qx.push(x);
qy.push(y);
vis[x][y]=1;
while(!qx.empty()&&!qy.empty())
{
int nx=qx.front();
qx.pop();
int ny=qy.front();
qy.pop();
for(int i=0;i<4;i++)
{
int xx=nx+dx[i];
int yy=ny+dy[i];
if((xx>=1&&xx<=n)&&(yy>=1&&yy<=m)&&vis[xx][yy]==0&&mapp[xx][yy]=='.')
{
if(xx==ex&&yy==ey)
{
return d[nx][ny]+1;
}
else
{
vis[xx][yy]=1;
d[xx][yy]=d[nx][ny]+1;
qx.push(xx);
qy.push(yy);
}
}
}
}
return -1;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>mapp[i][j];
if(mapp[i][j]=='d')
{
ex=i,ey=j;
}
if(mapp[i][j]='m')
{
sx=i,sy=j;
}
}
}
if(bfs(sx,sy)==-1)
{
cout<<"No way"<<endl;
}
else
{
cout<<bfs(sx,sy)<<endl;
}
return 0;
}