#include<bits/stdc++.h>

#define INF 1e9
#define llINF 1e18
#define MOD 1e9+7
#define pb push_back
#define mp make_pair 
#define F first
#define S second
#define ll long long
using namespace std;
char tmp[20000];
int cnt=0;
int mminus(int num){
  if(num==1)return 1;
  else if(num==2)return 0;
  else return 2;
}
int dfs(){
  if(tmp[cnt]=='('){
    cnt++;
    int le=dfs();
    cnt++;
    if(tmp[cnt]=='*'){
      cnt++;
      int ri=dfs();
      cnt++;
      //cout<<le<<" "<<ri<<endl;
      if(le==2&&ri==2){
	return 2;
      }else if(le!=0&&ri!=0){
	return 1;
      }else
	return 0;
    }else if(tmp[cnt]=='+'){
      cnt++;
      int ri=dfs();
      cnt++;
      if(le==0&&ri==0)return 0;
      else if(le==2||ri==2)return 2;
      else return 1;
    }
  }else if(tmp[cnt]=='-'){
    cnt++;
    return mminus(dfs());
  }else{
    return (int)(tmp[cnt]-'0');
  }
}
int main(){
  string s;
  while(cin>>s,s!="."){
    for(int i=0;i<20000;i++)
      tmp[i]='\0';
    int ans=0;
    for(int i=0;i<3;i++){
      for(int j=0;j<3;j++){
	for(int k=0;k<3;k++){
	  for(int l=0;l<s.size();l++){
	    if(s[l]=='P'){
	      tmp[l]=(char)(i+'0');
	    }else if(s[l]=='Q'){
	      tmp[l]=(char)(j+'0');
	    }else if(s[l]=='R'){
	      tmp[l]=(char)(k+'0');
	    }else{
	      tmp[l]=s[l];
	    }
	  }
	  cnt=0;
	  if(dfs()==2)ans++;
	}
      }
    }
    cout<<ans<<endl;
  }
  return 0;
}

