#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const long long LINF = 0x3f3f3f3f3f3f3f3fll;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int t;
  cin >> t;
  while (t--) {
    int r, c;
    cin >> r >> c;
    vector<vector<char> > mat(r, vector<char>(c));
    bool algumA = false;
    bool algumP = false;
    for (int I = 0; I < r; I++) {
      for (int J = 0; J < c; J++) {
        cin >> mat[I][J];
        if (mat[I][J] == 'A') {
          algumA = true;
        } else {
          algumP = true;
        }
      }
    }
    if (!algumP) {
      cout << 0 << '\n';
      continue;
    }
    if (!algumA) {
      cout << "MORTAL" << '\n';
      continue;
    }
    bool temP = false;
    for (int I = 0; I < c; I++) {
      if (mat[0][I] == 'P') {
        temP = true;
        break;
      }
    }
    if (!temP) {
      cout << 1 << '\n';
      continue;
    }
    temP = false;
    for (int I = 0; I < c; I++) {
      if (mat[r - 1][I] == 'P') {
        temP = true;
        break;
      }
    }
    if (!temP) {
      cout << 1 << '\n';
      continue;
    }
    temP = false;
    for (int I = 0; I < r; I++) {
      if (mat[I][0] == 'P') {
        temP = true;
        break;
      }
    }
    if (!temP) {
      cout << 1 << '\n';
      continue;
    }
    temP = false;
    for (int I = 0; I < r; I++) {
      if (mat[I][c - 1] == 'P') {
        temP = true;
        break;
      }
    }
    if (!temP) {
      cout << 1 << '\n';
      continue;
    }
    bool temp = false;
    for (int I = 0; I < r; I++) {
      temP = false;
      for (int J = 0; J < c; J++) {
        if (mat[I][J] == 'P') {
          temP = true;
          break;
        }
      }
      temp |= !temP;
    }
    if (temp) {
      cout << 2 << '\n';
      continue;
    }
    temp = false;
    for (int I = 0; I < c; I++) {
      temP = false;
      for (int J = 0; J < r; J++) {
        if (mat[J][I] == 'P') {
          temP = true;
          break;
        }
      }
      temp |= !temP;
    }
    if (temp) {
      cout << 2 << '\n';
      continue;
    }
    if (mat[0][0] == 'A' || mat[r - 1][0] == 'A' || mat[0][c - 1] == 'A' ||
        mat[r - 1][c - 1] == 'A') {
      cout << 2 << '\n';
      continue;
    }
    bool temA = false;
    for (int I = 0; I < c; I++) {
      if (mat[0][I] == 'A') {
        temA = true;
        break;
      }
    }
    if (temA) {
      cout << 3 << '\n';
      continue;
    }
    temA = false;
    for (int I = 0; I < c; I++) {
      if (mat[r - 1][I] == 'A') {
        temA = true;
        break;
      }
    }
    if (temA) {
      cout << 3 << '\n';
      continue;
    }
    temA = false;
    for (int I = 0; I < r; I++) {
      if (mat[I][0] == 'A') {
        temA = true;
        break;
      }
    }
    if (temA) {
      cout << 3 << '\n';
      continue;
    }
    temA = false;
    for (int I = 0; I < r; I++) {
      if (mat[I][c - 1] == 'A') {
        temA = true;
        break;
      }
    }
    if (temA) {
      cout << 3 << '\n';
      continue;
    }
    cout << 4 << '\n';
  }
  return 0;
}
