#include <bits/stdc++.h>
using namespace std;
int dy[5] = {0, 0, 1, -1, 0};
int dx[5] = {1, -1, 0, 0, 0};
int main(void) {
  while (1) {
    int count = 0;
    int calc, first, second;
    bool flag = false;
    bool check = false;
    string s;
    cin >> s;
    if (s == ".") {
      break;
    }
    for (int p = (0); p <= (2); p++) {
      for (int q = (0); q <= (2); q++) {
        for (int r = (0); r <= (2); r++) {
          flag = false;
          check = false;
          stack<int> sta;
          for (int i = (0); i <= (s.size() - 1); i++) {
            switch (s[i]) {
              case 'P':
                if (flag) {
                  flag = false;
                  switch (p) {
                    case 0:
                      sta.push(2);
                      break;
                    case 1:
                      sta.push(1);
                      break;
                    case 2:
                      sta.push(0);
                      break;
                  }
                } else {
                  sta.push(p);
                }
                break;
              case 'Q':
                if (flag) {
                  flag = false;
                  switch (q) {
                    case 0:
                      sta.push(2);
                      break;
                    case 1:
                      sta.push(1);
                      break;
                    case 2:
                      sta.push(0);
                      break;
                  }
                } else {
                  sta.push(q);
                }
                break;
              case 'R':
                if (flag) {
                  flag = false;
                  switch (r) {
                    case 0:
                      sta.push(2);
                      break;
                    case 1:
                      sta.push(1);
                      break;
                    case 2:
                      sta.push(0);
                      break;
                  }
                } else {
                  sta.push(r);
                }
                break;
              case '(':
                break;
              case ')':
                first = sta.top();
                sta.pop();
                calc = sta.top();
                sta.pop();
                second = sta.top();
                sta.pop();
                switch (calc) {
                  case -1:
                    if (first == 2 || second == 2) {
                      sta.push(2);
                    } else if (first == 0 && second == 0) {
                      sta.push(0);
                    } else {
                      sta.push(1);
                    }
                    break;
                  case -2:
                    if (first == 2 && second == 2) {
                      sta.push(2);
                    } else if (first == 0 || second == 0) {
                      sta.push(0);
                    } else {
                      sta.push(1);
                    }
                    break;
                }
                break;
              case '-':
                if (flag) {
                  flag = false;
                } else {
                  flag = true;
                }
                break;
              case '+':
                sta.push(-1);
                break;
              case '*':
                sta.push(-2);
                break;
              case '0':
                if (flag) {
                  sta.push(2);
                } else {
                  sta.push(0);
                }
                break;
              case '1':
                sta.push(1);
                break;
              case '2':
                if (flag) {
                  sta.push(0);
                } else {
                  sta.push(2);
                }
                break;
            }
          }
          if (sta.top() == 2) {
            count++;
          }
        }
      }
    }
    cout << count << endl;
  }
  return 0;
}
