#include <bits/stdc++.h>
using namespace std;
int p, q, r;
void invert(stack<int> &st) {
  int x;
  x = st.top();
  st.pop();
  if (st.empty()) {
    st.push(x);
    return;
  }
  while (st.top() == -1) {
    x = (x - 1) * (-1) + 1;
    st.pop();
  }
  st.push(x);
  return;
}
void calc(stack<int> &st) {
  int x, y;
  while (true) {
    invert(st);
    x = st.top();
    st.pop();
    int t = st.top();
    if (t == -4) {
      st.pop();
      st.push(x);
      invert(st);
      return;
    } else {
      st.pop();
      invert(st);
      y = st.top();
      st.pop();
      if (t == -2) {
        st.push(max(x, y));
      } else if (t == -3) {
        st.push(min(x, y));
      }
    }
  }
}
int main() {
  while (true) {
    string str;
    cin >> str;
    if (str[0] == '.') break;
    stack<int> st;
    int ans = 0;
    for (p = 0; p < 3; p++) {
      for (q = 0; q < 3; q++) {
        for (r = 0; r < 3; r++) {
          for (int i = 0; i < str.length(); i++) {
            if (str[i] == '-')
              st.push(-1);
            else if (str[i] == '+')
              st.push(-2);
            else if (str[i] == '*')
              st.push(-3);
            else if (str[i] == '(')
              st.push(-4);
            else if (str[i] == 'P')
              st.push(p);
            else if (str[i] == 'Q')
              st.push(q);
            else if (str[i] == 'R')
              st.push(r);
            else if (str[i] == ')')
              calc(st);
            else
              st.push((int)str[i] - 48);
          }
          if (st.top() == 2) ans++;
        }
      }
    }
    cout << ans << endl;
  }
  return 0;
}
