#include<bits/stdc++.h> using namespace std; int x,y; int qx,qy,gx,gy; char a[101][101]; int d[30][30]; int fx[4]={0,1,0,-1}; int fy[4]={1,0,-1,0}; void dfs(int x,int y,int k){ for(int i=1;i<=4;i++){ d[x][y]=0; int tx=x+fx[i]; int ty=y+fy[i]; if(tx>=1&&tx<=x&&ty>=1&&ty<=y&&a[x][y]!='#'){ if(d[tx][ty]=='x'&&k+2<d[tx][ty]){ dfs(tx,ty,k+2); } else if(d[tx][ty]!='x'&&k+1<d[tx][ty]){ dfs(tx,ty,k+1); } } } } int main(){ cin>>x>>y; for(int i=1;i<=x;i++){ for(int j=1;j<=y;j++){ cin>>a[i][j]; d[i][j]=INT_MAX; if(a[i][j]=='r'){ qx=i; qy=j; }else if(a[i][j]=='a'){ gx=i; gy=j; } } } dfs(qx,qy,0); int zdbs=d[gx][gy]; if(zdbs==INT_MAX) cout<<"Impossible"; else cout<<zdbs; return 0; } /************************************************************** Problem: 1901 User: zengdongxin Language: C++ Result: Wrong Answer ****************************************************************/