using System.Collections.Generic;
private static Dictionary<string, int> cache = new Dictionary<string, int>();
private static int GetNumberOfCombinations(string s)
if (cache.ContainsKey(s))
return int.Parse(s) <= 26 ? s.Length : s.Length - 1;
int value = GetNumberOfCombinations(s.Substring(1));
if (int.Parse(s.Substring(0, 2)) <= 26)
value += GetNumberOfCombinations(s.Substring(2));
public static void Main(string[] args)
const string TestStr = "1111111111111111111111111";
Console.WriteLine(GetNumberOfCombinations(TestStr));