#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)<(y)?(x):(y))
#define mul min
#define add max
#define n(x) (2-(x))

int I;

int parse(char *p){
  switch(*p){
    case '0': return 0;
    case '1': return 1;
    case '2': return 2;
    case 'P': return I%3;
    case 'Q': return I/3%3;
    case 'R': return I/9%3;
    case '-': return n(parse(p+1));
    case '(': {
                int x=0;
                p++;
                char *q=p;
                for(;;p++){
                  if(*p=='(')x++;
                  if(*p==')')x--;
                  if(x==0&&*p!='-')break;
                }
                p++;
                switch(*p){
                  case '*': return mul(parse(q),parse(p+1));
                  case '+': return add(parse(q),parse(p+1));
                }
              }
  }
}

int main(){
  char p[81];
  int s;
  while(1){
    s=0;
    scanf("%s",p);
    if(*p=='.')return 0;
    for(I=0;I<27;I++)
        if(parse(p)==2)s++;
    printf("%d\n",s);
  }
}