#include <stdio.h>
#include <string.h>
#define io(x) freopen(x ".in", "r", stdin); freopen(x ".out", "w", stdout);
typedef long long ll;
const int SIZE = 64, MOD = 1e9 + 7;
ll qpow(ll a, ll b)
{
if (!b)
return 1;
ll ans = qpow(a, b >> 1);
ans *= ans, ans %= MOD;
if (b & 1)
ans *= a, ans %= MOD;
return ans;
}
ll calc(char *s, int left, int right, ll a)
{
int min = 936936936, min_pos = 936936936, cur = 0;
bool is_number = true;
for (int i = left; i < right; i++)
{
int curprio = 936936944;
if (s[i] == '(') cur += 114;
if (s[i] == ')') cur -= 114;
if (s[i] == '+' || s[i] == '-') curprio = cur + 1, is_number = false;
if (s[i] == '*') curprio = cur + 2, is_number = false;
if (s[i] == '^') curprio = cur + 3, is_number = false;
if (curprio <= min) min = curprio, min_pos = i;
}
ll ret;
if (is_number)
{
bool is_a = false;
for (int i = left; i < right; i++)
if (s[i] == 'a')
{
ret = a, is_a = true;
break;
}
if (!is_a)
{
int num = 0;
for (int i = left; i < right; i++)
if ('0' <= s[i] && s[i] <= '9')
num = 10 * num + s[i] - '0';
ret = num;
}
}
else
{
ll qwq = calc(s, left, min_pos, a);
ll QWQ = calc(s, min_pos + 1, right, a);
if (s[min_pos] == '+')
ret = (qwq + QWQ) % MOD;
if (s[min_pos] == '-')
ret = ((qwq - QWQ) % MOD + MOD) % MOD;
if (s[min_pos] == '*')
ret = (qwq * QWQ) % MOD;
if (s[min_pos] == '^')
ret = qpow(qwq, QWQ);
}
return ret;
}
char s[SIZE], t[SIZE];
const int tests[] = {0, 1, 2, 5, 10, 114, 514, 926, 936, 1919810};
int main()
{
scanf("%s", s);
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%s", t);
bool ok = true;
for (int j = 0; j < sizeof(tests) / sizeof(*tests); j++)
if (calc(s, 0, strlen(s), tests[j]) != calc(t, 0, strlen(t), tests[j]))
{
ok = false;
break;
}
if (ok)
putchar('A' + i);
}
}
record