#include <bits/stdc++.h>
using namespace std;
int eval(const string& s, int& pos) {
  if (s[pos] == '0') {
    ++pos;
    return 0;
  }
  if (s[pos] == '1') {
    ++pos;
    return 1;
  }
  if (s[pos] == '2') {
    ++pos;
    return 2;
  }
  if (s[pos] == '-') {
    ++pos;
    int v = eval(s, pos);
    return 2 - v;
  }
  if (s[pos] == '(') {
    int a = eval(s, pos);
    char c = s[pos++];
    int b = eval(s, pos);
    if (c == '*') {
      return (a * b + 1) / 2;
    }
    if (c == '+') {
      return max(a, b);
    }
    abort();
  }
  return 2;
}
int main(void) {
  string s, temp;
  cin >> s;
  string p, q, r;
  int count = 0;
  int zero = 0;
  for (int j = 0; j < 3; j++) {
    if (j == 0) p = '0';
    if (j == 1) p = '1';
    if (j == 2) p = '2';
    for (int k = 0; k < 3; k++) {
      if (j == 0) q = '0';
      if (j == 1) q = '1';
      if (j == 2) q = '2';
      for (int l = 0; l < 3; l++) {
        if (j == 0) q = '0';
        if (j == 1) q = '1';
        if (j == 2) q = '2';
        temp = s;
        zero = 0;
        for (int i = 0; i < s.length(); i++) {
          if (s.at(i) == 'P') {
            temp.replace(i, 1, p);
          }
          if (s.at(i) == 'Q') {
            temp.replace(i, 1, q);
          }
          if (s.at(i) == 'R') {
            temp.replace(i, 1, r);
          }
        }
        if (eval(temp, zero) == 2) count++;
      }
    }
  }
  cout << count << endl;
  return 0;
}
