#include <iostream>
#include <string>

int parse(int P, int Q, int R, std::string &str) 
{
	switch(str[0]) {
		case '0':
			str.erase(0, 1);
			return 0;
			break;
		case '1':
			str.erase(0, 1);
			return 1;
			break;
		case '2':
			str.erase(0, 1);
			return 2;
			break;
		case 'P':
			str.erase(0, 1);
			return P;
			break;
		case 'Q':
			str.erase(0, 1);
			return Q;
			break;
		case 'R':
			str.erase(0, 1);
			return R;
			break;
		case '-': 
			{
				str.erase(0, 1);
				int a = parse(P, Q, R, str);
				return 2 - a;
				break;
			};
		case '(':
			{
				str.erase(0, 1);
				int a = parse(P, Q, R, str);
				if ( str[0] == '*' ) {
					str.erase(0, 1);
					int b = parse(P, Q, R, str);
					str.erase(0, 1);
					if ( a == 0 || b == 0 ) return 0;
					else if ( a == 2 && b == 2 ) return 2;
					else return 1;
				} else {
					str.erase(0, 1);
					int b = parse(P, Q, R, str);
					str.erase(0, 1);
					if ( a == 2 || b == 2 ) return 2;
					else if ( a == 0 && b == 0 ) return 0;
					else return 1;
				}
			}
	}
	return -1;
}

int main()
{
	while (true) {
		std::string str;
		std::getline(std::cin, str);
		if ( str == "." ) break;

		std::string buf;
		int count = 0;
		for ( int i = 0; i < 3; ++i ) {
			for ( int j = 0; j < 3; ++j ) {
				for ( int k = 0; k < 3; ++k ) {
					buf = str;
					if ( parse(i, j, k , buf) == 2 ) count++;
				}
			}
		}
		std::cout << count << std::endl;
	}
	return 0;
}