1 #include <cstdio>
2 #include <cmath>
3 #include <cstring>
4 #include <algorithm>
5 #include <queue>
6 #include <stack>
7 #include <vector>
8 #include <iomanip>
9 using namespace std;
10 char a[35][35][35];
11 int vis[35][35][35];
12 int l,n,m,mmin;
13 int sl,sx,sy,el,ex,ey;
14 int dir[15][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
15 int panduan(int z,int x,int y)
16 {
17 return z>=0&&z<l&&x>=0&&x<n&&y>=0&&y<m;
18 }
19
20 struct node
21 {
22 int x,y,z,f;
23 };
24 node be;
25 void bfs()
26 {
27 queue<node>q;
28 be.f=0;
29 q.push(be);
30 while(!q.empty())
31 {
32 node now=q.front();
33 q.pop();
34 if(a[now.z][now.x][now.y]=='E')
35 {
36 mmin=min(mmin,now.f);
37 continue;
38 }
39 for(int i=0;i<6;i++)
40 {
41 int nl=now.z+dir[i][0];
42 int nx=now.x+dir[i][1];
43 int ny=now.y+dir[i][2];
44 if(a[nl][nx][ny]!='#'&&vis[nl][nx][ny]==0&&panduan(nl,nx,ny))
45 {
46 //printf("%d %d %d %d\n",nl,nx,ny,now.f+1);
47 vis[nl][nx][ny]=1;
48 node nex;
49 nex.z=nl,nex.x=nx,nex.y=ny,nex.f=now.f+1;
50 q.push(nex);
51 }
52 }
53 }
54 }
55 int main(int argc, char *argv[])
56 {
57 while(scanf("%d%d%d",&l,&n,&m)!=EOF)
58 {
59 if(l==0&&n==0&&m==0)
60 break;
61 for(int i=0;i<l;i++)
62 {
63 for(int j=0;j<n;j++)
64 {
65 getchar();
66 scanf("%s",a[i][j]);
67 for(int k=0;k<m;k++)
68 {
69 if(a[i][j][k]=='S')
70 {
71 be.z=i;be.x=j;be.y=k;
72 }
73 }
74 }
75 }
76 memset(vis,0,sizeof(vis));
77 vis[be.z][be.x][be.y]=1;
78 mmin=1e9;
79 bfs();
80 if(mmin==1e9)
81 printf("Trapped!\n");
82 else
83 printf("Escaped in %d minute(s).\n",mmin);
84 }
85 return 0;
86 }