창영이는 시스템 프로그래밍 숙제에 쓸 해시 함수를 만들고 있다. 이 함수는 단어를 숫자로 바꾸며, 다음과 같이 재귀적으로 정의된다.
ε은 빈 단어, w는 단어, x는 그 뒤에 붙이는 한 글자다. 단어는 알파벳 소문자로만 이루어진다. ⊕는 비트 단위 XOR 연산이고 (0110⊕1010=1100), ord(x)는 x가 알파벳에서 몇 번째 글자인지를 나타낸다 (ord(a)=1, ord(z)=26). AmodB는 A를 B로 나눈 나머지다.
M=10이면 해시값은 다음과 같다.
길이가 N인 단어 중 해시값이 K인 것이 몇 개인지 세는 프로그램을 작성하시오.
첫째 줄에 N, K, M이 공백으로 구분되어 주어진다. (1≤N≤10, 0≤K<2M, 6≤M≤25)
길이가 N이고 해시값이 K인 단어의 개수를 출력한다.
N=3, K=16, M=10일 때 조건을 만족하는 단어는 dxl, hph, lxd, xpx이다.