#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<math.h>

using namespace std;
 
string YA(string ans);
string YJ(string ans);
string YC(string ans);
string YE(string ans);
string YP(string ans);
string YM(string ans);


int main(){

	int n;
	string R;
	string ans;

	cin>>n;
	for(int I=0;I<n;I++){

	cin>>R;
	cin>>ans;

	for(int i=R.size()-1;i>=0;i--){
		if(R[i]=='A')ans=YA(ans);
		if(R[i]=='J')ans=YJ(ans);
		if(R[i]=='C')ans=YC(ans);
		if(R[i]=='E')ans=YE(ans);
		if(R[i]=='P')ans=YP(ans);
		if(R[i]=='M')ans=YM(ans);
	}

	cout<<ans<<endl;
	}
	return 0;
}

string YA(string ans){
	string t=ans;
	int x=ans.size()-1;
	for(int i=0;i<ans.size();i++)
		ans[i]=t[x-i];

	return ans;
}
string YC(string ans){
	string t=ans;
	int x=ans.size()-1;
	for(int i=0;i<ans.size()-1;i++)
		ans[i]=t[i+1];
	ans[x]=t[0];
	return ans;
}
string YJ(string ans){
	string t=ans;
	int x=ans.size()-1;
	for(int i=0;i<ans.size()-1;i++)
		ans[i+1]=t[i];
	ans[0]=t[x];
	return ans;
}
string YM(string ans){
	for(int i=0;i<ans.size();i++){
		if(ans[i]>='0'&&ans[i]<'9'){
			ans[i]+=1;
		}
		else if(ans[i]=='9')ans[i]='0';
	}
	return ans;
}
string YP(string ans){
	for(int i=0;i<ans.size();i++){
		if(ans[i]>'0'&&ans[i]<='9'){
			ans[i]-=1;
		}
		else if(ans[i]=='0')ans[i]='9';
	}
	return ans;
}
string YE(string ans){
	string t=ans;
	int x=(ans.size())/2;
	int N=x;
	if(ans.size()%2==1)N++;
	for(int i=0;i<x;i++)
		ans[i]=t[N+i];
	
	for(int i=N;i<ans.size();i++) 
	ans[i]=t[i-N];
	//ans=Q+t;
	return ans;
}