Index: src/solver.d
==================================================================
--- src/solver.d
+++ src/solver.d
@@ -338,11 +338,11 @@
 		Tuple!(char,int)[] tryB() {
 			const(Pos)[] q;
 			foreach(p; gs) q ~= p;
 			bool[][] v = new bool[][](g.map.H+2, g.map.W+2);
 			foreach(p; q) v[p.y][p.x]=true;
-			for(int step=10; q.length; ++step) {
+			for(int step=8; q.length; ++step) {
 				Pos[] q2;
 				foreach(p; q) {
 					int[] yyy=[p.y-1,p.y,p.y,p.y+1];
 					int[] xxx=[p.x,p.x-1,p.x+1,p.x];
 					string sss="URLD";
@@ -699,11 +699,11 @@
 			char[] ds=['D','U','L','R'];
 			for(int i=0; i<4; ++i) {
 				if(g.map.robot==p && death.count(ds[i]))
 					continue;
 				int y=p.y+dy[i], x=p.x+dx[i];
-				if((g.map[y,x]==' '||g.map[y,x]=='\\'||g.map[y,x]=='.'||g.map[y,x]=='O')&&!V[y][x]) {
+				if((g.map[y,x]==' '||g.map[y,x]=='\\'||g.map[y,x]=='.'||g.map[y,x]=='O'||g.map[y,x]=='!')&&!V[y][x]) {
 					Q.push(tuple(new Pos(y,x),p), dist+1);
 				}
 			}
 		}