/* 简单的六方向bfs
*/
#include<cstdio>
#include<cstring>#include<queue>
using namespace std;
int l,r,c;
int ex,ey,ez,max1,count,ok;
char map[110][110][110];
int vis[110][110][110];
int d[4][6]= {{0,0,0,0,1,-1},{0,0,1,-1,0,0},{1,-1,0,0,0,0}};
struct node
{
int x,y,z;
int d;
};
int bfs(int x,int y,int z)
{
queue<node> Q;
node t;
t.x=x;
t.y=y;
t.z=z;
t.d=1;
Q.push(t);
while(!Q.empty())
{
node p;
p = Q.front();
Q.pop();
for(int i = 0; i < 6; i++)
{
node q;
q.x = p.x+d[0][i];
q.y = p.y+d[1][i];
q.z = p.z+d[2][i];
if(q.x>=0&&q.y>=0&&q.z>=0&&q.x<=l&&q.y<=r&&q.z<=c)
{
if(map[q.x][q.y][q.z]=='.')
{
map[q.x][q.y][q.z]='#';
q.d=p.d+1;
Q.push(q);
}
else if(map[q.x][q.y][q.z]=='E')
{
ok=1;
if(p.d<max1) max1=p.d;
return 0;
}
}
}
}
return 0;
}
int main()
{
while(scanf("%d %d %d",&l,&r,&c)==3)
{
if(!l&&!c&&!r) break;
getchar();
int x,y,z,flag=0;
for(int i = 0; i < l; i++)
{
for(int j = 0; j < r; j++)
{
gets(map[i][j]);
if(!flag)
for(int k = 0; k < c; k++)
if(map[i][j][k]=='S')
{
x=i;
y=j;
z=k;
flag=1;
break;
}
}
getchar();
}
max1=1<<30;
count=ok=0;
bfs(x,y,z);
if(ok)
printf("Escaped in %d minute(s).\n",max1);
else
printf("Trapped!\n");
memset(vis,0,sizeof(vis));
}
return 0;
}