#include
#include<string>
#include<string.h>
#include
#include
#include
#include
using namespace std;
int n,m,di,dj,ok,ss;
char mapp[210][210];
int vis[210][210];
//应该不止一个朋友
struct node{
int x,y;
int step;
friend bool operator < (node a,node b){
return a.step > b.step; //升序
}
};
int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
priority_queue pq;
void bfs(){
node temp,next;
int s,d;
while(!pq.empty()){
temp=pq.top();
// cout<
pq.pop();
if(temp.x==di&&temp.y==dj)
{
}
for(int i=0;i<4;i++){
s=temp.x+dir[i][0];
d=temp.y+dir[i][1];
if(s==di&&d==dj){
ok=1;
ss=temp.step+1;
break;}
if(s>=0&&s=0&&d0&&mapp[s][d]!=‘#‘){
if(mapp[s][d]==‘.‘){
next.step=temp.step+1;
}else if(mapp[s][d]==‘x‘){
next.step=temp.step+2;
}
next.x=s;
next.y=d;
pq.push(next);
vis[s][d]=1;
}
}
if(ok) break;
}
}
int main(){
int si,sj;
while(cin>>n>>m){
memset(vis,0,sizeof(vis));
while(!pq.empty()) pq.pop();
ok=0;
ss=0;
for(int i=0;i)
for(int j=0;j){
cin>>mapp[i][j];
if(mapp[i][j]==‘a‘){di=i;dj=j;}
if(mapp[i][j]==‘r‘){si=i;sj=j;}
}
node tt;
tt.x=si;tt.y=sj;tt.step=0;
vis[si][sj]=1;
pq.push(tt);
bfs();
if(ss) cout<endl;
else cout<<"Poor ANGEL has to stay in the prison all his life."<<endl;
}
return 0;
}