class Solution(object):
	def numDecodings(self, s):
		"""
		:type s: str
		:rtype: int
		"""
		if not s.isdigit():
			return 0
		
		if s=="" or s[0]=='0':
			return 0
		
		dp = [1,1]
		
		for i in range(2,len(s)+1):
			
			if  10 <= int(s[i-2:i]) <= 26 and s[i-1] != '0':
					dp.append(dp[i-2] + dp[i-1])
			
			elif int(s[i-2:i]) == 10 or int(s[i-2:i]) == 20:
				dp.append(dp[i-2])
		
			elif s[i-1] == "0":
				return 0
			
			else:
				dp.append(dp[i-1])
		
		return dp[len(s)]

sol = Solution()
print sol.numDecodings("27")
