#include <cstdio>
#include <cstring>
#include <stdlib.h>
char SO[101], S[101], schimb[1001];
long n, LIT[28], i;
void replace(char S[101], char ce[10], char cu[10]) {
char *p;
char t[105];
p = strstr(S, ce);
while (p != 0) {
strcpy(t, p);
strcpy(p, cu);
strcpy(p+strlen(cu), t+strlen(ce));
p = strstr(p, ce);
}
}
void erase(char S[101], char ce[10]) {
char *p;
p = strstr(S, ce);
while (p != 0) {
strcpy(p, p+strlen(ce));
p = strstr(p, ce);
}
}
int rez(char S[101]) {
long t, i;
char x[5] = "", y[5]="";
for (i = 0; i <= 27; ++i) {
x[0] = (char)(i+'A');
y[0] = (char)(LIT[i]+'0');
replace(S, x, y);
}
while ((t=strlen(S)) != 1) {
replace(S, "!0", "1");
replace(S, "!1", "0");
if (strlen(S) == t) {
replace(S, "0&0", "0");
replace(S, "0&1", "0");
replace(S, "1&1", "1");
replace(S, "1&0", "0");
if(strlen(S) == t) {
replace(S, "0|0", "0");
replace(S, "0|1", "1");
replace(S, "1|1", "1");
replace(S, "1|0", "1");
}
}
t = 0;
while (t != strlen(S)) {
t = strlen(S);
replace(S, "(0)", "0");
replace(S, "(1)", "1");
}
}
return S[0] - '0';
}
int main()
{
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
gets(SO);
scanf("%ld\n", &n);
scanf("%s\n", schimb);
replace(SO, "NOT", "!");
replace(SO, "NOT", "!");
replace(SO, "AND", "&");
replace(SO, "OR", "|");
replace(SO, "TRUE", "1");
replace(SO, "FALSE", "0");
erase(SO, " ");
for (i = 0; i < n; ++i) {
LIT[ schimb[i] - 'A' ] = 1 - LIT[ schimb[i] - 'A' ];
strcpy(S, SO);
printf("%ld", rez(SO));
strcpy(SO, S);
}
printf("\n");
return 0;
}