#include <bits/stdc++.h>

using namespace std;

typedef long long LL;
typedef vector<int>    VI;
typedef vector<bool>   VB;
typedef vector<string> VS;

#define MP make_pair
#define PB push_back
#define ALL(x)  (x).begin(),(x).end()
#define rep(i, N)  for (int i = 0; i < (int)(N); i++)
#define REP(i, init, N)  for (int i = (init); i < (int)(N); i++)
#define DUMP( x ) cerr << #x << " = " << ( x ) << endl

int main(void) {
	int n;
	cin >> n;
	rep (i, n) {
		string order, msg;
		cin >> order >> msg;
		reverse(ALL(order));
		rep (j, order.size()) {
			switch (order[j]) {
				case 'J':
					msg = msg[msg.size() - 1] + msg.substr(0, msg.size() - 1);
					break;
				case 'C':
					msg = msg.substr(1) + msg[0];
					break;
				case 'E':
					if (msg.size() % 2) {
						string s1 = msg.substr(0, msg.size() / 2);
						string s2 = msg.substr(msg.size() / 2 + 1);
						msg = s2 + msg[msg.size() / 2] + s1;
					} else {
						string s1 = msg.substr(0, msg.size() / 2);
						string s2 = msg.substr(msg.size() / 2);
						msg = s2 + s1;
					}
					break;
				case 'A':
					reverse(ALL(msg));
					break;
				case 'P':
					for (char &c : msg) {
						if ('0' <= c && c <= '9') {
							c = (c == '0'? '9' : c - 1);
						}
					}
					break;
				case 'M':
					for (char &c : msg) {
						if ('0' <= c && c <= '9') {
							c = (c == '9'? '0' : c + 1);
						}
					}
					break;
				default:
					break;
			}
		}
		cout << msg << endl;
	}

    return 0;
}