#include <bits/stdc++.h>
using namespace std;
long long md = 1000000007;
long long fact[100005], mi[100005], expt[100005];
long long pw(long long a, long long b) {
  long long c = 1, m = a;
  while (b) {
    if (b & 1) c = (c * m) % md;
    m = (m * m) % md;
    b /= 2;
  }
  return c;
}
long long modinv(long long n) { return pw(n, md - 2); }
inline long long add(long long a, long long b) { return (md + a + b) % md; }
inline long long subt(long long a, long long b) { return (a - b + md) % md; }
inline long long mult(long long a, long long b) { return (1ll * a * b) % md; }
long long ncr(int n, int r) {
  if (!n) return 1;
  return mult(fact[n], mult(mi[r], mi[n - r]));
}
void pre() {
  fact[0] = 1;
  for (int i = 1; i < 100003; i++) fact[i] = mult(i, fact[i - 1]);
  for (int i = 0; i < 100003; i++) mi[i] = modinv(fact[i]);
}
int myceil(int a, int b) {
  if (a % b)
    return (a / b) + 1;
  else
    return a / b;
};
void solvetestcase(int tcn) {
  int r, c;
  cin >> r >> c;
  string s[r];
  for (int i = 0; i < r; i++) cin >> s[i];
  long long ans = 0;
  if (!ans) {
    int flag = 1;
    for (int i = 0; i < r; i++)
      for (int j = 0; j < c; j++) {
        if (!flag) break;
        if (s[i][j] == 'P') flag = 0;
      }
    if (flag) {
      cout << 0;
      cout << '\n';
      return;
    }
  }
  if (!ans) {
    int check1 = 1, check2 = 1, check3 = 1, check4 = 1;
    for (int i = 0; i < r; i++) {
      if (s[i][0] == 'P')
        check1 *= 0;
      else
        check1 *= 1;
      if (s[i][c - 1] == 'P')
        check2 *= 0;
      else
        check2 *= 1;
    }
    for (int i = 0; i < c; i++) {
      if (s[0][i] == 'P')
        check3 *= 0;
      else
        check3 *= 1;
      if (s[r - 1][i] == 'P')
        check4 *= 0;
      else
        check4 *= 1;
    }
    if (check1 || check2 || check3 || check4) ans = 1;
  }
  if (!ans) {
    if (s[r - 1][c - 1] == 'A' || s[r - 1][0] == 'A' || s[0][0] == 'A' ||
        s[0][c - 1] == 'A')
      ans = 2;
    if (!ans) {
      int flag = 1;
      for (int i = 0; i < r; i++) {
        flag = 1;
        for (int j = 0; j < c; j++) {
          if (s[i][j] == 'A')
            flag *= 1;
          else
            flag *= 0;
        }
        if (flag) break;
      }
      if (flag)
        ans = 2;
      else {
        for (int j = 0; j < c; j++) {
          flag = 1;
          for (int i = 0; i < r; i++) {
            if (s[i][j] == 'A')
              flag *= 1;
            else
              flag *= 0;
          }
          if (flag) break;
        }
        if (flag) ans = 2;
      }
    }
  }
  if (!ans) {
    int check1 = 0, check2 = 0, check3 = 0, check4 = 0;
    for (int i = 0; i < r; i++) {
      if (s[i][0] == 'P')
        ;
      else
        check1 = 1;
      if (s[i][c - 1] == 'P')
        ;
      else
        check2 = 1;
    }
    for (int i = 0; i < c; i++) {
      if (s[0][i] == 'P')
        ;
      else
        check3 = 1;
      if (s[r - 1][i] == 'P')
        ;
      else
        check4 = 1;
    }
    if (check1 || check2 || check3 || check4) ans = 3;
  }
  if (!ans) {
    int flag = 0;
    for (int i = 0; i < r; i++)
      for (int j = 0; j < c; j++) {
        if (flag) break;
        if (s[i][j] == 'A') flag = 1;
      }
    if (flag) ans = 4;
  }
  if (!ans)
    cout << "MORTAL\n";
  else
    cout << ans << '\n';
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  int t = 1;
  cin >> t;
  for (int T = 1; T < t + 1; T++) {
    solvetestcase(T);
  }
};
