#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
****************************************************************/