#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
#define pii pair<int,int>
const int N = 210;
int sx,sy, ex,ey;
int r, c;
char map[N][N];
int d[N][N];
int bfs()
{
queue<pii>q;
int dx[4] = { -1,0,1,0 }, dy[4] = { 0,1,0,-1 };
q.push({ sx,sy });
memset(d, -1, sizeof d);
d[sx][sy] = 0;
while (!q.empty())
{
auto t = q.front(); q.pop();
for (int i = 0; i < 4; i++)
{
int x = t.first + dx[i], y = dy[i] + t.second;
if (x == ex && y == ey)
{
d[x][y] = d[t.first][t.second] + 1;
return d[x][y];
}
if (x >= 1 && x <= r && y >= 1 && y <= c && map[x][y] == '.' && d[x][y] == -1)
{
d[x][y] = d[t.first][t.second] + 1;
q.push({ x,y });
}
}
}
return -1;
}
int main()
{
int t; cin >> t;
while (t--)
{
memset(map, '#', sizeof(map));
cin >> r >> c;
for (int i = 1; i <= r; i++)
for (int j = 1; j <= c; j++)
{
cin >> map[i][j];
if (map[i][j] == 'S')
{
sx = i, sy = j;
}
if (map[i][j] == 'E')
{
ex = i, ey = j;
}
}
int ans=bfs();
if(ans==-1)
cout<<"oop!"<<endl;
else
cout<<ans<<endl;
}
}