#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

string cmd_J(string s){
  string ret;
  for(int i = 1 ; i < (int)(s.size()) ; i++){
    ret += s[i];
  }
  ret += s[0];
  return ret;
}

string cmd_C(string s){
  string ret;
  ret += s[s.size()-1];
  for(int i = 0 ; i < (int)(s.size()-1) ; i++){
    ret += s[i];
  }
  return ret;
}

string cmd_E(string s){
  string a, b;
  
  if(s.size()%2 == 1){
    a = s.substr(0, s.size()/2);
    b = s.substr(s.size()/2+1, s.size());
    return b+s[s.size()/2]+a;
  }
  else{
    a = s.substr(0, s.size()/2);
    b = s.substr(s.size()/2, s.size());
    return b+a;
  }  
}

string cmd_A(string s){
  string ret = s;
  reverse(ret.begin(), ret.end());
  return ret;
}

string cmd_P(string s){
  for(int i = 0 ; i < (int)(s.size()) ; i++){
    if(isdigit(s[i])){
      int a = s[i]-'0';
      a++;
      if(a == 10) a = 0;
      s[i] = a+'0';
    }
  }
  return s;
}

string cmd_M(string s){
  for(int i = 0 ; i < (int)(s.size()) ; i++){
    if(isdigit(s[i])){
      int a = s[i]-'0';
      a--;
      if(a == -1) a = 9;
      s[i] = a+'0';
    }
  }
  return s;
}

int main(){
  int n;
  cin >> n;
  while(n--){
    string cmd, message;
    cin >> cmd >> message;
    for(int i = (int)(cmd.size()-1) ; i >= 0 ; i--){
      switch(cmd[i]){
      case 'J': 
	message = cmd_C(message);
	break;
      case 'C':
	message = cmd_J(message);
	break;
      case 'E': 
	message = cmd_E(message);
	break;
      case 'A':
	message = cmd_A(message);
	break;
      case 'P': 
	message = cmd_M(message);
	break;
      case 'M':
	message = cmd_P(message);
	break;
      }
    }
    cout << message << endl;
  }
  return 0;
}