#include <bits/stdc++.h>
using namespace std;
inline int toInt(string s) {
  int v;
  istringstream sin(s);
  sin >> v;
  return v;
}
template <class T>
inline string toString(T x) {
  ostringstream sout;
  sout << x;
  return sout.str();
}
template <class T>
inline T sqr(T x) {
  return x * x;
}
const double eps = 1e-10;
const double pi = acos(-1.0);
const long long INF = 1LL << 62;
const int inf = 1 << 29;
int main(void) {
  int n;
  cin >> n;
  while (n--) {
    string order, in;
    cin >> order >> in;
    for (int i = order.size() - 1; 0 <= i; i--) {
      switch (order.at(i)) {
        case 'J': {
          string front = in.substr(in.size() - 1);
          string back = in.substr(0, in.size() - 1);
          in = front + back;
          break;
        }
        case 'C': {
          string front = in.substr(1);
          string back = in.substr(0, 1);
          in = front + back;
          break;
        }
        case 'E': {
          string front = in.substr(in.size() / 2);
          string mid = in.substr(in.size() / 2, in.size() % 2);
          string back = in.substr(0, in.size() / 2);
          in = front + mid + back;
          break;
        }
        case 'A': {
          reverse((in).begin(), (in).end());
          break;
        }
        case 'M': {
          for (int i = (0); i < (in.size()); ++i) {
            if (in.at(i) == '9') {
              in[i] = '0';
            } else if ('0' <= in.at(i) && in.at(i) <= '8') {
              in[i]++;
            }
          }
          break;
        }
        case 'P': {
          for (int i = (0); i < (in.size()); ++i) {
            if (in.at(i) == '0') {
              in[i] = '9';
            } else if ('1' <= in.at(i) && in.at(i) <= '9') {
              in[i]--;
            }
          }
          break;
        }
        default: {
          cout << "unknown" << endl;
          break;
        }
      }
    }
    cout << in << endl;
  }
  return 0;
}
