#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 55;
const int Mod = 100001;
string st;
int ty[15], ans[15];
char ch[N];
int n, line[N], num[N], cnt, lf[N], rt[N];
void del(int pos) {
string t = "";
for (int i = 0; i < pos; i++) t += st[i];
for (int i = pos; i < n - 1; i++) t += st[i + 1];
n = t.size();
st = t;
}
void init() {
memset(line, 0, sizeof(line));
memset(num, 0, sizeof(num));
memset(ch, 0, sizeof(ch));
memset(lf, 0, sizeof(lf));
memset(rt, 0, sizeof(rt));
cnt = 0;
n = st.size();
stack<int> s, ss;
for (int i = 0; i < n; i++) if (st[i] == ' ') s.push(i);
while (!s.empty()) {
del(s.top());
s.pop();
}
for (int i = 0; i < n; i++) {
if (st[i] == '(') s.push(i);
if (st[i] == ')') {
if (!s.empty()) s.pop();
else ss.push(i);
}
}
while (!s.empty()) {
del(s.top());
s.pop();
}
while (!ss.empty()) {
del(ss.top());
ss.pop();
}
for (int i = 0; i < st.size(); i++) {
if (st[i] == '(') s.push(i);
else if (st[i] == ')') {
line[s.top()] = i;
s.pop();
}
}
}
int String_To_Num(int l, int r) {
int sum = 0;
for (int i = l; i <= r; i++) sum = sum * 10 + st[i] - '0';
return sum;
}
void build(int l, int r) {
if (l == r && st[l] == 'a') {
ch[++cnt] = 'a';
return;
}
while (st[l] == '(' && st[r] == ')' && line[l] == r) l++, r--;
int p1 = -1, p2 = -1, p3 = -1, p;
for (int i = l; i <= r; i++) {
if (st[i] == '(') i = line[i];
else if (st[i] == '+' || st[i] == '-') p1 = i;
else if (st[i] == '*' && p1 == -1) p2 = i;
else if (st[i] == '^' && p1 == -1 && p2 == -1) p3 = i;
}
p = (p1 > -1 ? p1 : (p2 > -1 ? p2 : p3));
if (p == -1) {
num[++cnt] = String_To_Num(l, r);
ch[cnt] = ' ';
return;
}
int x = ++cnt;
ch[x] = st[p];
lf[x] = cnt + 1;
build(l, p - 1);
rt[x] = cnt + 1;
build(p + 1, r);
}
int get() { return rand() % 100; }
int calc(int a, int b, char op) {
if (op == '+') return a + b;
if (op == '-') return a - b;
if (op == '*') return a * b;
if (op == '^') return (int)pow(a, b) % Mod;
}
void dfs(int x, int rd) {
if (ch[x] == 'a') {
num[x] = (rd + Mod) % Mod;
return;
}
if (ch[x] == ' ') return;
dfs(lf[x], rd), dfs(rt[x], rd);
num[x] = (calc(num[lf[x]], num[rt[x]], ch[x]) + Mod) % Mod;
}
signed main() {
srand((int)time(NULL));
getline(cin, st);
init();
build(0, n - 1);
for (int i = 1; i <= 10; i++) {
ty[i] = get();
dfs(1, ty[i]);
ans[i] = num[1];
}
int t;
scanf("%lld\n", &t);
for (int i = 1; i <= t; i++) {
getline(cin, st);
init();
build(0, n - 1);
bool same = true;
for (int j = 1; j <= 10; j++) {
dfs(1, ty[j]);
if (ans[j] != num[1]) {
same = false;
break;
}
}
if (same) printf("%c", 'A' + i - 1);
}
return 0;
}