import std.stdio;
import std.algorithm;
import std.string;
import std.range;
import std.array;
import std.conv;
import std.complex;
import std.math;
import std.ascii;
import std.bigint;
import std.container;
import std.typecons;

auto readInts() {
	return array(map!(to!int)(readln().strip().split()));
}
auto readInt() {
	return readInts()[0];
}
auto readLongs() {
	return array(map!(to!long)(readln().strip().split()));
}
auto readLong() {
	return readLongs()[0];
}

const real eps = 1e-10;

string decode(string s, char m) {
	switch(m) {
		case 'J':
			return s[$-1] ~ s[0..$-1];
		case 'C':
			return s[1..$] ~ s[0];
		case 'E':
			return s[($+1)/2..$] ~ s[$/2..($+1)/2] ~ s[0..$/2];
		case 'A':
			return s.dup.reverse.to!string;
		case 'P':
			return s.map!(to!char).map!((char a) {
				if(a == '0') {
					return '9';
				} else if(!digits.find(a).empty) {
					return cast(char)(a-1);
				} else {
					return a;
				}
			}).array;
		case 'M':
			return s.map!(to!char).map!((char a) {
				if(a == '9') {
					return '0';
				} else if(!digits.find(a).empty) {
					return cast(char)(a+1);
				} else {
					return a;
				}
			}).array;
		default:
			return s;
	}
}

void main(){
	auto n = readInt();
	for(int i; i < n; ++i) {
		auto o = readln().chomp();
		auto l = readln().chomp();
		foreach(m; o.dup.reverse){
			l = decode(l, m);
		}
		writeln(l);
	}
}