N개의 참/거짓 변수를 가진 식이 주어진다. 변수의 값으로 가능한 2N개의 경우에 대하여 식의 값이 0인 경우의 수를 구하는 프로그램을 작성하여라.
이 문제에서 식은 아래 BNF 표기법에서 expression을 뜻한다.
식의 값은 eval(expression)을 의미하며 아래와 같이 재귀적으로 계산된다. 잘 생각해보면 올바른 식이 주어졌을 때 해당 식을 계산하는 방법이 유일하다는 것을 알 수 있다.
첫 번째 줄에는 변수의 수 N (1≤N≤26)이 주어진다.
두 번째 줄에는 식에 해당하는 길이 1 이상 1 000 이하의 문자열이 주어진다. 식은 ‘0’, ‘1’, ‘a’-(N번째 알파벳 소문자), ‘=’, ‘?’, ‘:’로만 구성되며 올바른 식만 주어진다.
식의 값이 0이 되도록 변수의 값을 할당하는 방법의 수를 출력한다.