program num4;
var
  f,g:text;
  temp: string[10];
  place: integer;
  x, y: integer;
  map: array[1..10, 1..10] of char;
  been: array[0..11, 0..11] of boolean;

  least: integer;

  i: integer;

procedure dfs(x, y, steps: integer);
  var
    a, b: integer;
  begin
    if map[x, y] = 'E' then
      begin
        if steps < least then
          least := steps;

        exit;
      end;

    been[x, y] := true;

    for a := -1 to 1 do
      for b := -1 to 1 do
        if not been[x+a, y+b] then
          dfs(x+a, y+b, steps+1);
  end;

begin
  assign(f, 'DATA4.txt');
  reset(f);
  assign(g, 'OUT4.txt');
  rewrite(g);


  for i := 1 to 5 do
    begin

  readln(f,temp);

  place := 0;

  while temp <> 'xxxxxxxxxx' do
    begin
      inc(place);

      for x := 1 to length(temp) do
        map[place, x] := temp[x];

      readln(f,temp);
    end;

  fillchar(been, sizeof(been), true);
  for x := 1 to place do
    for y := 1 to 10 do
      if not (map[x, y] in [' ', 'x']) then
        been[x, y] := false;

  least := 1000;
  for x := 1 to place do
    for y := 1 to 10 do
      if map[x, y] = 'S' then
        dfs(x, y, 0);

  writeln(g,least);

end;
  close(f);
  close(g);
  readln;
end.
