#include<iostream>
#include<stdio.h>
#include<queue>
#include<algorithm>
using namespace std;
queue <int> qy,qx,qcnt;
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
int n,m,x,y,cnt,nx,ny,mini,ansx,ansy;
int t[20][20],sx,sy,tx,ty,vd[20][20],ghost[20][20];
string in;
int main(){
  while(cin>>n>>m&&n){
    for(int i=0;i<n;i++){
      cin>>in;
      for(int j=0;j<(int)in.size();j++){
	if(in[j]=='A')sx=j,sy=i;
	else if(in[j]=='B')tx=j,ty=i;
	t[i][j]=(in[j]=='#');
      }
    }
    
    for(int i=0;i<20;i++)for(int j=0;j<20;j++)vd[i][j]=0;
    vd[sy][sx]=1;
    qx.push(sx);
    qy.push(sy);
    qcnt.push(1);
    while(!qx.empty()){
      x=qx.front();qx.pop();
      y=qy.front();qy.pop();
      cnt=qcnt.front();qcnt.pop();
      for(int i=0;i<4;i++){
	nx=x+dx[i];ny=y+dy[i];
	if(!(0<=nx&&nx<m&&0<=ny&&ny<n))continue;
	if(vd[ny][nx]>0||t[ny][nx]==1)continue;
	vd[ny][nx]=cnt+1;
	qx.push(nx);
	qy.push(ny);
	qcnt.push(cnt+1);
      }
    }
    
    
    cin>>in;
    cnt=0;
    mini=99999999;
    for(int i=0;i<20;i++)for(int j=0;j<20;j++)ghost[i][j]=0;
    
    for(int I=0;I<400;I++){
      
      
      ghost[ty][tx]=1;
      for(int i=0;i<(int)in.size();i++){
	cnt++;
	
	if(cnt>=vd[ty][tx]&&vd[ty][tx]!=0){
	  if(mini>cnt){
	    mini=cnt;
	    ansy=ty;
	    ansx=tx;
	  }
	}
	if(in[i]=='5')continue;
	else if(in[i]=='8'){
	  if(ty==0)continue;
	  ty--;
	}else if(in[i]=='6'){
	  if(tx==m-1)continue;
	  tx++;
	}else if(in[i]=='4'){
	  if(tx==0)continue;
	  tx--;
	}else{
	  if(ty==n-1)continue;
	  ty++;
	}
      }//for
    }//while
    if(mini==99999999)cout<<"impossible"<<endl;
    else cout<<mini-1<<' '<<ansy<<' '<<ansx<<endl;
  }
  return 0;
}