//Train Ride
#include <fstream>
#include <string>
using namespace std;

int shrt=32767,e1,e2;
bool grid[100][100];

void search(int x,int y,int cur) {
	if (!grid[x][y])
		return;
	if ((x == e1) && (y == e2)) {
		if (cur < shrt)
			shrt=cur;
		return;
	}
	grid[x][y]=false;
	cur++;
	if (grid[x-1][y])
		search(x-1,y,cur);
	if (grid[x+1][y])
		search(x+1,y,cur);
	if (grid[x][y-1])
		search(x,y-1,cur);
	if (grid[x][y+1])
		search(x,y+1,cur);
	if (grid[x-1][y-1])
		search(x-1,y-1,cur);
	if (grid[x-1][y+1])
		search(x-1,y+1,cur);
	if (grid[x+1][y-1])
		search(x+1,y-1,cur);
	if (grid[x+1][y+1])
		search(x+1,y+1,cur);
}

int main() {
	ifstream fin("data4.txt");
	ofstream fout("out4.txt");

	int i,j,x,s1,s2;
	for (i=0;i<100;i++) {
		for (x=0;x<100;x++) {
			grid[i][x]=false;
		}
	}
	string temp;
	for (i=0;i<5;i++) {
		x=0;
		getline(fin,temp);
		while (temp != "xxxxxxxxxx") {
			for (j=0;j<temp.length();j++) {
				if (temp[j] == 'S') {
					s1=x;s2=j;
					grid[x][j]=true;
				}
				if (temp[j] == 'E') {
					e1=x;e2=j;
					grid[x][j]=true;
				}
				if (temp[j] != ' ')
					grid[x][j]=true;
				else grid[x][j]=false;
			}
			getline(fin,temp);
			x++;
		}
		search(s1,s2,0);
		fout << shrt << "\n";
	}

	fin.close();
	fout.close();
	return 0;
}
