#include <cstdio>
#include <cstring>
#include <cctype>
const int LENMAX = 100010;
const int NMAX = 101;
bool val[LENMAX];
int N;
bool expresie (), factor(), termen ();
char s[NMAX];
char *poz;
bool NOT (char c) {
if (c == '0') {
return 1;
}
if (c == '1') {
return 0;
}
if (val[c - 'A'] == 0) {
return 1;
}
if (val[c - 'A'] == 1) {
return 0;
}
}
bool VAL (char c) {
if (c == '0') {
return 0;
}
if (c == '1') {
return 1;
}
if (val[c - 'A'] == 0) {
return 0;
}
if (val[c - 'A'] == 1) {
return 1;
}
}
bool expresie () {
bool ans = termen ();
while (*poz == 'O') {
++poz; ++poz;
ans |= termen ();
}
return ans;
}
bool termen () {
bool ans = factor ();
while (*poz == 'A') {
++poz; ++poz; ++poz;
ans &= factor ();
}
return ans;
}
bool factor () {
bool ans = 0;
if (*poz == '(') {
++poz;
ans = expresie ();
++poz;
return ans;
}
if (*poz == 'N') {
++poz; ++poz; ++poz;
return NOT (*poz);
}
return VAL (*poz);
}
int main () {
freopen ("bool.in", "r", stdin);
freopen ("bool.out", "w", stdout);
gets (s);
poz = s;
scanf ("%d ", &N);
char C;
for (int i = 1; i <= N; i++) {
scanf ("%c", &C);
val[C - 'A'] = NOT (C);
poz = s;
int ans = expresie ();
printf ("%d", ans);
}
printf ("\n");
return 0;
}