#include <bits/stdc++.h>
using namespace std;

#define State string::const_iterator
class ParseError {};

int expression(State &begin);
int term(State &begin);
int number(State &begin);
int factor(State &begin);
int not_operator(State &begin);
void consume(State &begin, char expected);

int R,P,Q;

// 四則演算の式をパースして、その評価結果を返す。
int expression(State &begin) {
    int ret = term(begin);

    /*
    while(true){
        
        if(*begin == '-'){
            consume(begin, '-');
            ret -= term(begin);
        }
        else{
            break;
        }
    }
    */

    return ret;

}

// 乗算除算の式をパースして、その評価結果を返す。
int term(State &begin) {
    int ret = factor(begin);
    
    while(true){
        if(*begin == '*'){
            consume(begin, '*');
            ret = min(ret, factor(begin));
        }
        else if(*begin == '+'){
            consume(begin, '+');
            ret = max(ret, factor(begin));
        }
        else{
            break;
        }
    }

    return ret;
}

// 数字の列をパースして、その数を返す。
int number(State &begin) {
    int ret = 0;

    if(*begin=='R'){
        consume(begin, 'R');
        return R;
    }
    else if(*begin=='P'){
        consume(begin, 'P');
        return P;
    }
    else if(*begin=='Q'){
        consume(begin, 'Q');
        return Q;
    }
    while(isdigit(*begin)){
        ret *= 10;
        ret += *begin - '0';
        begin++;
    }

    return ret;
}

// 括弧か数をパースして、その評価結果を返す。
int factor(State &begin) {
    if (*begin == '(') {
        consume(begin, '('); // '('を飛ばす。
        int ret = expression(begin);
        consume(begin, ')'); // ')'を飛ばす。
        return ret;
    }
    else {
        return not_operator(begin);
    }
}

int not_operator(State &begin){
    if(*begin == '-'){
        consume(begin, '-');
        int ret = factor(begin);
        if(ret == 2){
            ret = 0;
        }
        else if(ret == 0){
            ret = 2;
        }
        //cout << *begin << " " << ret << endl;
        return ret;
    }
    return number(begin);
}

// beginがexpectedを指していたらbeginを一つ進める。
void consume(State &begin, char expected) {
    if (*begin == expected) {
        begin++;
    } else {
        cerr << "Expected '" << expected << "' but got '" << *begin << "'"
             << endl;
        cerr << "Rest string is '";
        while (*begin) {
            cerr << *begin++;
        }
        cerr << "'" << endl;
        throw ParseError();
    }
}

int main() {

    while(true){

        string input;

        cin >> input;

        if(input[0] == '.'){
            break;
        }

        int count = 0;

        for(int i=0; i<3; i++){
            for(int j=0; j<3; j++){
                for(int k=0; k<3; k++){
                    R = i;
                    P = j;
                    Q = k;
                    // cout << R << " " << P << " " << Q << endl;
                    State s = input.begin();
                    int culc = expression(s);
                    // cout << culc << endl;
                    if(culc == 2){
                        count++;
                    }
                }
            }
        }
        cout << count << endl;
       

    }

    return 0;
}


Measured memory_bytes: 3112