#include<iostream>
using namespace std;
int n,m,first;
int q=-1,w=-1;
int sta[2001][2001];
char a[2001][2001];
int dx[4]={0,1,-1,0};
int dy[4]={1,0,0,-1};
void dfs(int x,int y,int t)
{
sta[x][y]=t;
if(a[x][y]=='d')
{
if(first==0)//第一次找到
{
q=x;
w=y;
}
first++;
return;
}
for(int i=0;i<4;i++)
{
int xx=x+dx[i];
int yy=y+dy[i];
if(xx<0||xx>=n||yy<0||yy>=m)
{
continue;
}
if(a[xx][yy]=='#')
{
continue;
}
if(sta[xx][yy]==0||sta[xx][yy]>t+1)
{
dfs(xx,yy,t+1);
}
}
}
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>a[i][j];
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(a[i][j]=='m')
{
dfs(i,j,0);
}
}
}
if(q==-1&&w==-1)
{
cout<<"No Way!";
return 0;
}
cout<<sta[q][w];
return 0;
}
感谢大佬!