#include <iostream>
#include <vector>
#include <cstring>
#include <string>
#include <algorithm>
#include <iomanip>
#include <cmath>
#include <cassert>
using namespace std;

string J(string s) {
	return  s.back() + s.substr(0, s.size() - 1);
}

string C(string s) {
	return  s.substr(1, s.size() - 1) + s.front();
}

string E(string s) {
	string ret;
	if(s.size() % 2) {
		for(int i = s.size() / 2 + 1; i < s.size(); i++) {
			ret += s[i];
		}
		ret += s[s.size() / 2];
		for(int i = 0; i < s.size() / 2; i++) {
			ret += s[i];
		}
	}
	else {
		for(int i = s.size() / 2; i < s.size(); i++) {
			ret += s[i];
		}
		for(int i = 0; i < s.size() / 2; i++) {
			ret += s[i];
		}
	}
	return ret;
}

string A(string s) {
	reverse(s.begin(), s.end());
	return s;
}

string P(string s) {
	for(int i = 0; i < s.size(); i++) {
		if(!isalpha(s[i])) {
			s[i] = '0' + (s[i] - '0' + 9) % 10;
		}
	}
	return s;
}

string M(string s) {
	for(int i = 0; i < s.size(); i++) {
		if(!isalpha(s[i])) {
			s[i] = '0' + (s[i] - '0' + 1) % 10;
		}
	}
	return s;
}

int main() {
	cin.tie(0);
	ios::sync_with_stdio(false);
	int n;
	cin >> n;
	for(int loop = 0; loop < n; loop++) {
		string s, t;
		cin >> s >> t;
		for(int i = s.size() - 1; i >= 0; i--) {
			char c = s[i];
			if(c == 'J') t = J(t);
			if(c == 'C') t = C(t);
			if(c == 'E') t = E(t);
			if(c == 'A') t = A(t);
			if(c == 'P') t = P(t);
			if(c == 'M') t = M(t);
		}

		cout << t << endl;
	}
}