#include <bits/stdc++.h>
using namespace std;

int n;
char buf[114514];

string C(string s) {
  return s.substr(1) + s[0];
}

string J(string s) {
  int k = s.length()-1;
  return s[k] + s.substr(0, k);
}

string E(string s) {
  int n = s.length();
  if (n%2 == 1) {
    return s.substr(n/2+1) + s[n/2] + s.substr(0, n/2);
  }
  return s.substr(n/2) + s.substr(0, n/2);
}

string A(string s) {
  reverse(s.begin(), s.end());
  return s;
}

string M(string s) {
  int n = s.length();
  for (int i=0; i<n; i++) {
    char c = s[i];
    if ('0' <= c && c <= '9') s[i] = '0' + (c-'0'+1)%10;
  }
  return s;
}

string P(string s) {
  int n = s.length();
  for (int i=0; i<n; i++) {
    char c = s[i];
    if ('0' <= c && c <= '9') s[i] = '0' + (c-'0'+9)%10;
  }
  return s;
}

int main() {
  scanf("%d", &n);
  while (n--) {
    scanf(" %s", buf);
    string order(buf);
    scanf(" %s", buf);
    string msg(buf);

    reverse(order.begin(), order.end());
    for (int i=0; i<order.size(); i++) {
      if (order[i] == 'A') msg = A(msg);
      if (order[i] == 'J') msg = J(msg);
      if (order[i] == 'E') msg = E(msg);
      if (order[i] == 'P') msg = P(msg);
      if (order[i] == 'M') msg = M(msg);
      if (order[i] == 'C') msg = C(msg);
    }

    printf("%s\n", msg.c_str());
  }
}