#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<cstring>
#include<set>
#include<queue>
#include<stack>

using namespace std;

int add[3][3] = {
			{0, 1, 2},
			{1, 1, 2},
			{2, 2, 2}
		};

int prod[3][3] = {
			{0, 0, 0},
			{0, 1, 1},
			{0, 1, 2}
		};

int minu[3] = {2, 1, 0};

int P, Q, R;

string str;

int eval(int &pos){
	if(str[pos]=='0'){ pos++; return 0; }
	if(str[pos]=='1'){ pos++; return 1; }
	if(str[pos]=='2'){ pos++; return 2; }
	if(str[pos]=='P'){ pos++; return P; }
	if(str[pos]=='Q'){ pos++; return Q; }
	if(str[pos]=='R'){ pos++; return R; }
	if(str[pos]=='-'){ pos++; return minu[eval(pos)]; }
	if(str[pos++]=='('){
		int a = eval(pos);
		char op = str[pos++];
		int b = eval(pos);
		pos++;
		if(op=='+') return add[a][b];
		if(op=='*') return prod[a][b];
	}
}

int main(){
	while(1){
		cin >> str;
		if(str==".") break;
		int ans=0;
		int pos=0;
		for(P=0; P<3; P++){
			for(Q=0; Q<3; Q++){
				for(R=0; R<3; R++){
					int pos=0;
					int result = eval(pos);
					if(result==2) ans++;
				}
			}
		}
		cout << ans << endl;
	}
	return 0;
}