๊ฐ์ง = 1~26 (A~Z)
๋
ธ๋ - ์
๋ ฅ ๋ฆฌ์คํธ์ ์ธ๋ฑ์ค
code.insert(n, -1)
์ด์ : elif i>=10 and code[L] == i//10 and code[L+1] == i%10:
๋ฌธ์ฅ์์ ๋ง์ฝ ๋ง์ง๋ง ์ธ๋ฑ์ค์ ๊ฐ์ด 1์ด๋ 2์ธ ๊ฒฝ์ฐ, code[L] == i//10
์ด ํต๊ณผ๋์ด code[L+1] == i%10
์ L+1 ๋ถ๋ถ์์ ์ธ๋ฑ์ค ๋ฒ์ ์๋ฌ๊ฐ ๋ ์ ์๊ธฐ ๋๋ฌธ์ -1 ์ฝ์
ํด๋๊ธฐ. (1์ด๋ 2๊ฐ ์๋๋ผ๋ฉด code[L] == i//10
์์๋ถํฐ ํต๊ณผ๊ฐ ๋์ง ์์. ์ํ๋ฒณ์ 26๊น์ง๋ง ์๊ธฐ ๋๋ฌธ. 10์ ์๋ฆฌ๊ฐ 2๊ฐ ์ต๋)
def DFS(L, P):
global cnt
if L == n:
cnt += 1
for j in range(P): # P๊ฐ ํ๋ ์ฆ๊ฐํด์ ์๊ธฐ ๋๋ฌธ์ 0~P๊น์ง ๋๊ฒ ๋จ
print(chr(res[j]+64), end='')
print()
else:
for i in range(1, 27): # 1~26
if code[L] == i:
res[P] = i
DFS(L+1, P+1)
elif i>=10 and code[L] == i//10 and code[L+1] == i%10: # i๊ฐ ๋์๋ฆฌ ์ซ์์ผ๋
res[P] = i
DFS(L+2, P+1)
code = list(map(int, input())) # ์
๋ ฅ ๋ฆฌ์คํธ๋ก ๋ฐ๊ธฐ
n = len(code)
code.insert(n, -1)
res = [0] * (n+3)
cnt = 0
DFS(0, 0)
print(cnt)