#include <cstdio>
#include <algorithm>
#include <cassert>
#include <vector>
using namespace std;

int pqr[3];
char *pt;
int parse() {
  int ret;
  if('0' <= *pt && *pt <= '2') {
    ret = *pt-'0';
    pt++;
  } else if('P' <= *pt && *pt <= 'R') {
    ret = pqr[*pt-'P'];
    pt++;
  } else if('-' == *pt) {
    pt++;
    ret = 2-parse();
  } else if('(') {
    pt++;
    int x = parse();
    char op = *pt; pt++;
    int y = parse();
    if(op == '*') {
      ret = min(x,y);
    } else if(op == '+') {
      ret = max(x,y);
    } else assert(false);
    assert(*pt==')');
    pt++;
  } else assert(false);
  return ret;
}

int main() {
  for(int tci = 0; ; tci++) {
    char pr[100]; scanf(" %s", pr);
    if(*pr=='.') break;
    int cnt=0;
    for(pqr[0]=0;pqr[0]<3;pqr[0]++)
      for(pqr[1]=0;pqr[1]<3;pqr[1]++)
        for(pqr[2]=0;pqr[2]<3;pqr[2]++) {
          pt=pr;
          if(parse()==2)cnt++;
        }
    printf("%d\n", cnt);
  }
  return 0;
}