#include <iostream>
#include <fstream>
using namespace std;
const int Lmax = 3000;
const int Sigma = 256;
char expr[Lmax + 1];
bool 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;
return !termen();
}
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' )
{
return val[ expr[ point++ ] ];
}
while ( 1 );
return 0;
}
bool eval_and()
{
bool t = termen();
while ( expr[ point ] == 'A' && expr[ point + 1 ] == 'N' && expr[ point + 2 ] == 'D' )
{
point += 5;
t &= termen();
}
return t;
}
bool eval_or()
{
bool t = eval_and();
while ( expr[ point ] == 'O' && expr[ point + 1 ] == '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 ] ^= 1;
point = 0;
cout << eval_or();
}
return 0;
}