//#include <bits/stdc++.h>
#include <iostream>
#include <stdio.h>
#include <queue>
#include <algorithm>
#include <fstream>
#define MAXN 1010
#define INF 0x3f3f3f
using namespace std;
int nex[4][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
char mmp[MAXN][MAXN];
int tim[MAXN][MAXN];
struct Node
{
int x;
int y;
int layer;
};
int main(void)
{
int T;
//ofstream fout("D:\\out.txt");
scanf("%d", &T);
while (T--) {
int R, C;
int startx, starty;
queue<Node> people;//人可以走的地方
queue<Node> fire;//用以统计每个点着火的时间
scanf("%d%d", &R, &C);
Node temp;
for (int i = 0; i < R; i++)cin >> mmp[i];
for (int i = 0; i < R; i++)
for (int j = 0; j < C; j++) {
if (mmp[i][j] == '.')tim[i][j] = INF;
else if (mmp[i][j] == 'J') {
tim[i][j] = INF;//起点
people.push(Node{ i, j, 0 });
}
else if (mmp[i][j] == 'F') {
tim[i][j] = 0;//着火点
fire.push(Node{ i, j, 0 });
}
else if (mmp[i][j] == '#') { tim[i][j] = -1; }//墙
}
temp = people.front();
if (temp.x == 0 || temp.y == 0 || temp.x == R - 1 || temp.y == C - 1)
{//第一次WA的地方,如果起点在边缘直接输出1
printf("1\n");
//fout << 1 << endl;
continue;
}
while (!fire.empty())
{//计算地图每个地方着火的时间
for (int i = 0; i < 4; i++)
{
int tx = fire.front().x + nex[i][0];
int ty = fire.front().y + nex[i][1];
int ttim = fire.front().layer;
if (tx >= 0 && tx < R&&ty >= 0 && ty < C&&tim[tx][ty] == INF)
{
tim[tx][ty] = ttim + 1;
fire.push(Node{ tx, ty, ttim + 1 });
}
}
fire.pop();
}
bool ok = false;
int ans = 0;
while (!people.empty())
{//人开始走了
for (int i = 0; i < 4; i++)
{
int tx = people.front().x + nex[i][0];
int ty = people.front().y + nex[i][1];
int dist = people.front().layer + 1;
if ((tx == 0 || tx == R - 1 || ty == 0 || ty == C - 1) && mmp[tx][ty] == '.'&&dist < tim[tx][ty])
{//走到边界之后
ok = true;
ans = dist;
break;
}
if (tx > 0 && tx < R - 1 && ty>0 && ty < C - 1 && mmp[tx][ty] == '.'&&dist < tim[tx][ty])
{//没有走到边界
people.push(Node{ tx, ty, dist });
mmp[tx][ty] = '+';
}
}
if (ok)break;
people.pop();
}
if (ok)
{
printf("%d\n", ans + 1);
//fout << ans + 1 << endl;
}
else
{
printf("IMPOSSIBLE\n");
//fout << "IMPOSSIBLE" << endl;
}
}
//system("pause");
return 0;
}