#include
#include
#include
#include
using namespace std;
char g[40][40][40];
bool vis[40][40][40];
int l,r,c;
int dir[6][3] = {-1,0,0,1,0,0,0,-1,0,0,1,0,0,0,-1,0,0,1};
typedef struct status
{
int x,y,z,step;
status(const int &x,const int &y,const int &z,const int &step)
{
this->x = x , this->y = y, this->z = z ,this->step = step;
}
};
queueq;
int tarx,tary,tarz;
bool judge(int x,int y,int z)
{
if (g[z][x][y] == ‘#‘ || x >= r || x <0 || y >= c || y <0 || z >= l || z <0)
return false;
return true;
}
int bfs()
{
while(!q.empty())
{
status ns = q.front();q.pop();
if (ns.x == tarx && ns.y == tary && ns.z == tarz)
return ns.step;
int x = ns.x , y = ns.y , z = ns.z , step = ns.step;
for(int i = 0 ; i <6 ; ++ i)
{
int newx = x + dir[i][0];
int newy = y + dir[i][1];
int newz = z + dir[i][2];
if(!judge(newx,newy,newz) || vis[newx][newy][newz])
continue;
vis[newx][newy][newz] = true;
q.push(status(newx,newy,newz,step+1));
}
}
return -1;
}
int main(int argc,char *argv[])
{
while(scanf("%d%d%d",&l,&r,&c) && l )
{
for(int i = 0 ; i i)
for(int j = 0 ; j j)
scanf("%s",g[i][j]);
int stx,sty,stz;
for(int i = 0 ; i i)
for(int j = 0 ; j j)
for(int k = 0 ; k k)
{
if (g[i][j][k] == ‘S‘)
stx = j,sty = k,stz = i;
if (g[i][j][k] == ‘E‘)
tarx = j,tary = k , tarz = i;
}
while(!q.empty())
q.pop();
memset(vis,false,sizeof(vis));
vis[stx][sty][stz] = true;
q.push(status(stx,sty,stz,0));
int ans = bfs();
if (ans != -1)
printf("Escaped in %d minute(s).\n",ans);
else
printf("Trapped!\n");
}
return 0;
}