#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
#define debug 0
int main(){
	/*
	J	先頭を最後尾に
	C	最後尾を先頭に
	E	前半と後半を入れ替える(文字列が奇数なら真ん中は残す)
	A	文字列をひっくり返す
	P	プラス
	M	マイナス
	*/
	int n;
	for(cin>>n;n>0;n--){
		string order,str;
		cin>>order>>str;
		if(debug)cout<<"$"<<str<<endl;
		for(int i=order.size()-1;i>=0;i--){
			if(order[i]=='J'){
				string tmp="";
				tmp+=str[str.size()-1];
				for(int j=0;j<str.size()-1;j++)tmp+=str[j];
				str=tmp;
			}
			if(order[i]=='C'){
				string tmp="";
				for(int j=1;j<str.size();j++)tmp+=str[j];
				tmp+=str[0];
				str=tmp;
			}
			if(order[i]=='E'){
				string tmp="";
				if(str.size()%2){//奇数文字列
					for(int j=str.size()/2+1;j<str.size();j++)tmp+=str[j];
					tmp+=str[str.size()/2];
					for(int j=0;j<str.size()/2;j++)tmp+=str[j];
				}
				else{
					for(int j=str.size()/2;j<str.size();j++)tmp+=str[j];
					for(int j=0;j<str.size()/2;j++)tmp+=str[j];
				}
				str=tmp;
			}
			if(order[i]=='A'){
				reverse(str.begin(), str.end());
			}
			if(order[i]=='P'){
				for(int j=0;j<str.size();j++){
					if('0'<str[j]&&str[j]<='9')str[j]--;
					else if(str[j]=='0')str[j]='9';
				}
			}
			if(order[i]=='M'){
				for(int j=0;j<str.size();j++){
					if('0'<=str[j]&&str[j]<'9')str[j]++;
					else if(str[j]=='9')str[j]='0';
				}
			}
			if(debug)cout<<"#"<<str<<endl;
		}
		cout<<str<<endl;
	}
	
	return 0;
}
