#include <bits/stdc++.h>
using namespace std;
string s;
string func(string s) {
  stack<char> st;
  string t = "";
  for (int i = 0; i < s.size(); i++) {
    if (isalpha(s[i]) || isdigit(s[i])) {
      t += s[i];
      while (st.size() && st.top() == '-') t += st.top(), st.pop();
    } else if (s[i] != ')')
      st.push(s[i]);
    else {
      while (st.top() != '(') t += st.top(), st.pop();
      st.pop();
    }
  }
  return t;
}
string func2(string s, int p, int q, int r) {
  for (int i = 0; i < s.size(); i++) {
    if (s[i] == 'P') s[i] = '0' + p;
    if (s[i] == 'Q') s[i] = '0' + q;
    if (s[i] == 'R') s[i] = '0' + r;
  }
  return s;
}
int solve(string s) {
  stack<int> st;
  for (int i = 0; i < s.size(); i++) {
    if (isdigit(s[i])) st.push(s[i] - '0');
    if (s[i] == '-') {
      int a = st.top();
      st.pop();
      a = 2 - a;
      st.push(a);
    }
    if (s[i] == '+') {
      int a = st.top();
      st.pop();
      int b = st.top();
      st.pop();
      a = max(a, b);
      st.push(a);
    }
    if (s[i] == '*') {
      int a = st.top();
      st.pop();
      int b = st.top();
      st.pop();
      a = min(a, b);
      st.push(a);
    }
  }
  if (st.top() == 2)
    return 1;
  else
    return 0;
}
int main(void) {
  while (cin >> s && s != ".") {
    s = func(s);
    int ans = 0;
    for (int i = 0; i < 3; i++) {
      for (int j = 0; j < 3; j++) {
        for (int k = 0; k < 3; k++) {
          string t = s;
          t = func2(t, i, j, k);
          ans += solve(t);
        }
      }
    }
    cout << ans << endl;
  }
}
