#include <bits/stdc++.h> using namespace std; int n,m,sx,sy,ex,ey; int ans=INT_MAX; char a[100][100]; int v[100][100]; int dx[4]={0,1,-1,0}; int dy[4]={1,0,0,-1}; void dfs(int x,int y,int t){ if(x==ex&&y==ey){ if(t<ans) ans=t; return; } for(int i=0;i<=3;i++){ int tx=x+dx[i],ty=y+dy[i]; if(tx<=n&&tx>0&&ty<=m&&ty>0&&a[tx][ty]!='#'&&!v[tx][ty]){ v[tx][ty]=1; dfs(tx,ty,t+1+(a[tx][ty]=='x'?1:0)); v[tx][ty]=0; } } } int main() { cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; if(a[i][j]=='r') sx=i,sy=j; if(a[i][j]=='a') ex=i,ey=j; } } v[sx][sy]=1; dfs(sx,sy,0); if(ans==INT_MAX) cout<<"Impossible"; else cout<<ans; return 0; } //4 10 // //0234500067 //1034560500 //2045600671 //0000000089 /************************************************************** Problem: 1901 User: huangsheng Language: C++ Result: Time Limit Exceed ****************************************************************/