#include <iostream>
#include <fstream>
using namespace std;
const int Lmax = 1000;
const int Sigma = 26;
char expr[Lmax + 1];
int val[Sigma + 1];
int N, point;
bool eval_or();
bool eval_and();
bool termen();
bool termen()
{
if ( expr[ point ] == 'N' && expr[ point + 1 ] == 'O' && expr[ point + 2 ] == 'T' )
{
point += 4;
bool s = ( !termen() );
return s;
}
if ( expr[ point ] == '(' )
{
point++;
bool s = eval_or();
point++;
return s;
}
if ( expr[ point ] == 'T' && expr[ point + 1 ] == 'U' )
{
point += 4;
return 1;
}
if ( expr[ point ] == 'F' && expr[ point + 1 ] == 'A' )
{
point += 5;
return 0;
}
if ( 'A' <= expr[ point ] && expr[ point ] <= 'Z' )
{
point++;
return val[ expr[ point - 1 ] - 'A' ];
}
}
bool eval_and()
{
bool t = termen();
while ( expr[ point + 1 ] == 'A' && expr[ point + 2 ] == 'N' && expr[ point + 3 ] == 'D' )
{
point += 5;
t &= termen();
}
return t;
}
bool eval_or()
{
bool t = termen();
while ( expr[ point + 1 ] == 'O' && expr[ point + 2 ] == 'R' )
{
point += 4;
t |= eval_and();
}
return t;
}
int main()
{
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
char c;
gets( expr );
scanf("%d\n", &N);
for ( int i = 0; i < N; ++i )
{
scanf("%c", &c);
val[ c - 'A' ] ^= 1;
point = 0;
cout << eval_or();
}
return 0;
}