#include<iostream>
#include<stdio.h>
#include<string.h>
#include<queue>
#define inf 9999999
using namespace std;
struct node{
int x,y,z,step;//出发点到该点的步数
};
node start,end,current,next;
bool flag;
int l,r,c,m;
char s[31][31][31];
int visit[31][31][31];//记录是否访问
int dir[6][3] = { {-1,0,0},{1,0,0},{0,-1,0},{0,1,0},{0,0,-1},{0,0,1} };
bool check(int x,int y,int z){
if(x>=1 && y>=1 && z>=1 &&x<=c && y<=r && z<=l && (!visit[z][y][x]) &&(s[z][y][x]=='.' || s[z][y][x]=='E'))
return true;
else return false;
}
bool success(node a){
if(a.x==end.x&&a.y==end.y&&a.z==end.z) return true;
else return false;
}
void bfs(){ //广度搜索
queue<node>q;
q.push(start);
while(!q.empty()){
current=q.front();
q.pop();
if(success(current)){
flag=true;
end.step=min(end.step,current.step);
return;
}
else{
visit[current.z][current.y][current.x]=1;
for(int i=0;i<6;i++){
next.x=current.x+dir[i][0];
next.y=current.y+dir[i][1];
next.z=current.z+dir[i][2];
if(check(next.x,next.y,next.z)){
next.step=current.step+1;
visit[next.z][next.y][next.x]=1;
q.push(next);}
}
}
}
}
int main(){
while(~scanf("%d%d%d",&l,&r,&c)){
if(l==0 && r==0 && c==0) break;
getchar();
for(int i=1;i<=l;i++){
for(int u=1;u<=r;u++){
for(int k=1;k<=c;k++){
scanf("%c",&s[i][u][k]);
if(s[i][u][k]=='S'){start.x=k;start.y=u;start.z=i;start.step=0;}
if(s[i][u][k]=='E'){end.x=k;end.y=u;end.z=i;}
}
getchar();
}
}
end.step=inf;
memset(visit,0,sizeof(visit));
flag=false;
bfs();
if(flag) printf("Escaped in %d minute(s).\n",end.step);
else printf("Trapped!\n");
}
return 0;
}