#include <bits/stdc++.h>

using namespace std;

int add(int a, int b){
	return max(a,b);
}

int mul(int a, int b){
	return min(a,b);
}

int sub(int a){
	return 2-a;
}

bool is_digit(char c){
	return c >= '0' && c <= '9';
}

string calc(string s, int p, int q, int r){
	string ret;
	replace(s.begin(),s.end(),'P',char(p + '0'));
	replace(s.begin(),s.end(),'Q',char(q + '0'));
	replace(s.begin(),s.end(),'R',char(r + '0'));
	//cout << s << endl;
	for(int i=0;i < s.size();i++){
		if(i < s.size()-2){
			if(s[i] == '(' && s[i+2] == ')'){
				ret += s[i+1];
				i+=2;
				continue;
			}
			if(s[i+1] == '+' && is_digit(s[i]) && is_digit(s[i+2])){
				ret += to_string(add(int(s[i] - '0'),int(s[i+2] - '0')));
				i+=2;
				continue;
			}
			if(s[i+1] == '*' && is_digit(s[i]) && is_digit(s[i+2])){
				ret += to_string(mul(int(s[i] - '0'),int(s[i+2] - '0')));
				i+=2;
				continue;
			}
		}
		if(i < s.size()-1){
			if(s[i] == '-' && s[i+1] == '-'){
				i++;
				continue;
			}
			if(s[i] == '-' && is_digit(s[i+1])){
				ret += to_string(sub(int(s[i+1] - '0')));
				i++;
				continue;
			}
		}
		ret += s[i];
	}
	//cout << ret << endl;
	if(ret.size() > 1){
		return calc(ret, p, q, r);
	} else {
		return ret;
	}
}

int main(){
	string s;
	while(cin >> s, s != "."){
		int ans = 0;
		for(int p=0;p<3;p++){
			for(int q=0;q<3;q++){
				for(int r=0;r<3;r++){
					int x = stoi(calc(s, p, q, r));
					if(x == 2){
						ans ++;
					}
				}
			}
		}
		cout << ans << endl;
	}
}
