#include<bits/stdc++.h> using namespace std; int n,m,b,c,k,d,s; char a[10000][10000]; int fx[4]={-1,1,0,0}; int fy[4]={0,0,-1,1}; void dfs(int x,int y,int k){ a[x][y]=k; // cout<<x<<y<<endl; for(int i=0;i<=3;i++){ int tx=x+fx[i]; int ty=y+fy[i]; if(a[tx][ty]==-1){ //// cout<<k; //// cout<<endl; a[tx][ty]=k; //// for(int i=1;i<=n;i++){ //// for(int j=1;j<=m;j++){ //// cout<<int(a[i][j])<<" "; //// } //// cout<<endl; //// } } if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&a[tx][ty]!=-4){ // cout<<tx<<ty<<" "<<k<<endl; if(a[tx][ty]==-3&&k+2<a[tx][ty]){ dfs(tx,ty,k+2); } else if(a[tx][ty]!=-3&&k+1<a[tx][ty])dfs(tx,ty,k+1); } } } int main(){ 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]=='@'){ int(a[i][j]-64)+CHAR_MAX; a[i][j]=CHAR_MAX; } if(a[i][j]=='#'){ int(a[i][j]-35)-4; a[i][j]=-4; } if(a[i][j]=='a'){ b=i; c=j; int(a[i][j]-97)-1; a[i][j]=-1; } if(a[i][j]=='r'){ d=i; s=j; int(a[i][j]-114)-2; a[i][j]=-2; } if(a[i][j]=='x'){ int(a[i][j]-120)-3; a[i][j]=-3; } } } dfs(d,s,0); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cout<<int(a[i][j])<<setw(3); } cout<<endl; } // cout<<endl<<b<<" "<<c<<" "<<d<<" "<<s<<endl<<k; if(a[b][c]==-1) cout<<"Impossible"; else cout<<int(a[b][c]); return 0; } /************************************************************** Problem: 1901 User: chenjingqi Language: C++ Result: Output Limit Exceed ****************************************************************/