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