#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <cstdio>
#include <functional>
#include <set>
#include <sstream>
#include <map>
#include <queue>
 
using namespace std;


//Mr. J ???????????????
void decJ(string& s)
{
	string res;
	for(int i=0;i<s.size();i++) res+=s[(s.size()-1+i)%s.size()];
	s=res;
}

//Miss C ???????????????
void decC(string& s)
{
	string res;
	for(int i=0;i<s.size();i++) res+=s[(1+i)%s.size()];
	s=res;
}

//Mr.E ???????????\????????????
void decE(string& s)
{
	if(s.size()%2){
		string left=s.substr(0,s.size()/2);
		char mid=s[s.size()/2];
		string right=s.substr(s.size()/2+1);
		s=right+mid+left;
	}else{
		string left=s.substr(0,s.size()/2);
		string right=s.substr(s.size()/2);
		s=right+left;
	}
}

//Mr.A ?????¢
void decA(string& s)
{
	reverse(s.begin(),s.end());
}

//Dr. P	??°???++
void decP(string &s)
{
	for(int i=0;i<s.size();i++){
		if(s[i]=='0') s[i]='9';
		else if('0'<=s[i] && s[i]<='9' ) s[i]--;
	}
}

//Mr.M ??°???--
void decM(string &s)
{
	for(int i=0;i<s.size();i++){
		if(s[i]=='9') s[i]='0';
		else if('0'<=s[i] && s[i]<='9' ) s[i]++;
	}
}


int main()
{
	int n;
	cin>>n;

	for(int i=0;i<n;i++){
		string order,given;
		cin>>order>>given;

		//JCEAPM
		for(int j=order.size()-1;j>=0;j--){
			if(order[j]=='J') decJ(given);
			else if(order[j]=='C') decC(given);
			else if(order[j]=='E') decE(given);
			else if(order[j]=='A') decA(given);
			else if(order[j]=='P') decP(given);
			else decM(given);
		}
		cout<<given<<endl;
	}

	return 0;
}