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

int main() {
    int n; cin>>n;
    for(int i=0; i<n; i++){
        string order, message;
        cin>>order>>message;
        reverse(order.begin(), order.end());
        for(char c : order){
            if(c == 'J'){
                rotate(message.rbegin(), message.rbegin()+1, message.rend());
            }else if(c == 'C'){
                rotate(message.begin(), message.begin()+1, message.end());
            }else if(c == 'E'){
                if(message.size()%2 == 0){
                    message = message.substr(ceil(message.size()/2.0), message.size()) + message.substr(0, message.size()/2);
                }else{
                    int index = message.size()/2;
                    message = message.substr(ceil(message.size()/2.0), message[index]) + message[index] + message.substr(0, message.size()/2);
                }
            }else if(c == 'A'){
                reverse(message.begin(), message.end());
            }else if(c == 'P'){
                for(int j=0; j<message.size(); j++){
                    if(isdigit(message[j])){
                        int digit = stoi(message.substr(j,1).c_str());
                        message[j] = to_string(digit == 0 ? 9 : digit-1)[0];
                    }
                }
            }else{
                for(int j=0; j<message.size(); j++){
                    if(isdigit(message[j])){
                        int digit = stoi(message.substr(j,1).c_str());
                        message[j] = to_string((digit+1)%10)[0];
                    }
                }
            }
        }
        cout << message << endl;
    }
}

