#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
const int N=110;
struct Point//三维则定义一个结构体
{
int x,y,z;
};
char tr[N][N][N];
int dist[N][N][N];
Point q[N*N*N];
int l,r,c;
int d[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};//重新形成上下左右前后六个方向的数组
int bfs(Point start,Point end)
{
memset(dist,-1,sizeof dist);
dist[start.x][start.y][start.z]=0;
q[0]=start;//相当于二维中,赋予头节点
int hh=0,tt=0;//hh相当于头节点,tt相当于尾节点
while(hh<=tt)//相当于二维中,队列不为零
{
Point t=q[hh++];//赋予t头节点
for(int i=0;i<6;i++)
{
int x=t.x+d[i][0],y=t.y+d[i][1],z=t.z+d[i][2];//向六个方向扩展
if(x<0||x>=l||y<0||y>=r||z<0||z>=c)
continue;
if(tr[x][y][z]=='#') continue;
if(dist[x][y][z]!=-1) continue;
dist[x][y][z]=dist[t.x][t.y][t.z]+1;
if(x==end.x&&y==end.y&&z==end.z) return dist[x][y][z];
q[++tt]={x,y,z};//相当于更新尾节点
}
}
return -1;
}
int main()
{
while(scanf("%d%d%d",&l,&r,&c),l||r||c)
{
for(int i=0;i<l;i++)
for(int j=0;j<r;j++)
cin>>tr[i][j];
Point start,end;
for(int i=0;i<l;i++)
for(int j=0;j<r;j++)
for(int s=0;s<c;s++)
{
if(tr[i][j][s]=='S')
{
start.x=i;
start.y=j;
start.z=s;
}
if(tr[i][j][s]=='E')
{
end.x=i;
end.y=j;
end.z=s;
}
}
int distance=bfs(start,end);
if(distance!=-1) printf("Escaped in %d minute(s).\n",distance);
else printf("Trapped!\n");
}
return 0;
}