#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;i++)
using namespace std;
const int INF=INT_MAX,MOD=1e9+7;

stack<int> num;
stack<char> cal;

void calc_and(int x,int y){
	if(x==0||y==0) num.push(0);
	else if(x==1||y==1) num.push(1);
	else num.push(2);
}
void calc_or(int x,int y){
	if(x==2||y==2) num.push(2);
	else if(x==1||y==1) num.push(1);
	else num.push(0);
}
void calc_not(){
	int x=num.top(); num.pop();
	if(x==0) num.push(2);
	if(x==1) num.push(1);
	if(x==2) num.push(0);
}
void calc(){
	int x=num.top(); num.pop();
	int y=num.top(); num.pop();
	char c=cal.top(); cal.pop();
	if(c=='+') calc_or(x,y);
	if(c=='*') calc_and(x,y);
}

int main(){
	string s;
	while(cin>>s&&s!="."){
		reverse(s.begin(),s.end());
		int cnt=0;
		for(int p=0;p<3;p++){
			for(int q=0;q<3;q++){
				for(int r=0;r<3;r++){
					for(int i=0;i<(int)s.size();i++){
						if('0'<=s[i]&&s[i]<='2') num.push(s[i]-'0');
						if(s[i]=='P') num.push(p);
						if(s[i]=='Q') num.push(q);
						if(s[i]=='R') num.push(r);
						if(s[i]=='+') cal.push('+');
						if(s[i]=='*') cal.push('*');
						if(s[i]=='-') calc_not();
						if(s[i]=='(') calc();
					}
					int x=num.top(); num.pop();
					if(x==2) cnt++;
				}
			}
		}
		cout<<cnt<<endl;
	}
    return 0;
}

