#include<stdio.h>
#define max 201
struct point{
int x,y,count;
}queue[max*max],pri_queue[max*max];
char map[max][max];
int n,m,next[4][2]={0,1,0,-1,1,0,-1,0};
int bfs()
{
int i,j,num,s,x,y;
num=s=0;
for(i=0;i<=num;i++){
map[queue[i].x][queue[i].y]='#';
for(j=0;j<4;j++){
x=queue[i].x+next[j][0];
y=queue[i].y+next[j][1];
if(x<n && x>=0 && y<m && y>=0 && map[x][y]!='#'){
if(map[x][y]=='x'){
pri_queue[s].x=x;
pri_queue[s].y=y;
pri_queue[s++].count=queue[i].count+2;
}
else if(map[x][y]=='.'){
queue[++num].x=x;
queue[num].y=y;
queue[num].count=queue[i].count+1;
}
else
return ++queue[i].count;;
}
}
for(j=0;j<s;j++)
queue[++num]=pri_queue[j];
s=0;
}
return 0;
}
int main(){
int i,j,t,a,b;
while(scanf("%d%d",&n,&m)!=EOF){
for(i=0;i<n;i++){
scanf("%s",map[i]);
for(j=0;j<m;j++){
if(map[i][j]=='a'){
a=i;
b=j;
}
}
}
queue[0].x=a;
queue[0].y=b;
queue[0].count=0;
t=bfs();
if(t)
printf("%d\n",t);
else
puts("Poor ANGEL has to stay in the prison all his life.");
}
return 0;
}