#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
#define NMAX 1002
#define alfa 27
class Expresie {
char c[NMAX],*p;
int value[alfa];
public :
Expresie ();
Expresie (char *);
void invert_value(char);
void reset();
int check(char *, char *);
int evalueaza();
int termen();
int factor();
};
Expresie :: Expresie()
{
p = c;
memset(value,0,sizeof(value));
}
Expresie :: Expresie(char sir[])
{
int i,n,m;
memset(c,0,sizeof(c));
memset(value,0,sizeof(value));
n=strlen(sir)-1;
m=-1;
for(i=0;i<=n;i++)
if(sir[i]!=' ')
c[++m]=sir[i];
p = c;
}
int Expresie :: check(char *a, char *b)
{
int i, n;
n = strlen(b)-1;
for(i=0;i<=n;i++)
if(*(a+i)!=*(b+i))
return 0;
return 1;
}
void Expresie :: invert_value(char c)
{
value[c-'A']=!value[c-'A'];
}
void Expresie :: reset()
{
p = c;
}
int Expresie :: evalueaza()
{
int r;
r = termen();
while(check(p,"OR")) {
p=p+2;
r|=termen();
}
return r;
}
int Expresie :: termen()
{
int r;
r = factor();
while(check(p,"AND")) {
p=p+3;
r&=factor();
}
return r;
}
int Expresie :: factor()
{
int r,neg;
if(check(p,"NOT")) {
p=p+3;
neg=1;
}
else neg=0;
if(*p=='(') {
p++;
r=evalueaza();
p++;
}
else if(check(p,"TRUE")) {
r=1;
p=p+4;
}
else if(check(p,"FALSE")) {
r=0;
p=p+5;
}
else if(*p>='A' && *p<='Z') {
r=value[*p-'A'];
p++;
}
if(neg)
r=!r;
return r;
}
char sir[NMAX];
int main ()
{
int n,i;
char c;
ifstream f("bool.in");
ofstream g("bool.out");
f.get(sir,NMAX-1);
f>>n;
Expresie s(sir);
for(i=1;i<=n;i++) {
f>>c;
s.invert_value(c);
g<<s.evalueaza();
s.reset();
}
f.close();
g.close();
return 0;
}