#include <bits/stdc++.h>
using namespace std;
string J(string msg) {
  int n = msg.length();
  char end = msg[n - 1];
  msg.pop_back();
  return end + msg;
}
string C(string msg) {
  char first = msg[0];
  msg.erase(msg.begin(), msg.begin() + 1);
  return msg = msg + first;
}
string E(string msg) {
  int n = msg.length();
  int c = 0;
  if (n % 2 == 1) {
    c = 1;
  }
  for (int i = 0; i < (int)(n / 2); ++i) {
    swap(msg[i], msg[i + (n / 2) + c]);
  }
  return msg;
}
string A(string msg) {
  reverse((msg).begin(), (msg).end());
  return msg;
}
string P(string msg) {
  for (int i = 0; i < (int)(msg.length()); ++i) {
    if (isdigit(msg[i])) {
      int num = msg[i] - '0';
      num = num - 1;
      if (num < 0) {
        num = 9;
      }
      msg[i] = num + '0';
    }
  }
  return msg;
}
string M(string msg) {
  for (int i = 0; i < (int)(msg.length()); ++i) {
    if (isdigit(msg[i])) {
      int num = msg[i] - '0';
      num = num + 1;
      if (num > 9) {
        num = 0;
      }
      msg[i] = num + '0';
    }
  }
  return msg;
}
string analyze(string msg, char order) {
  string a_msg;
  if (order == 'J') {
    a_msg = J(msg);
  } else if (order == 'C') {
    a_msg = C(msg);
  } else if (order == 'E') {
    a_msg = E(msg);
  } else if (order == 'A') {
    a_msg = A(msg);
  } else if (order == 'P') {
    a_msg = P(msg);
  } else if (order == 'M') {
    a_msg = M(msg);
  }
  return a_msg;
}
int main() {
  int N;
  cin >> N;
  for (int nth = 0; nth < (int)(N); ++nth) {
    string order;
    string msg;
    cin >> order >> msg;
    for (int i = order.length(); i > 0; --i) {
      msg = analyze(msg, order[i - 1]);
    }
    cout << msg << endl;
  }
  return 0;
}
