public class E46Translation {
public static int getTranslationCount(int number) {
if (number < 0)
return -1;
char[] numbers = String.valueOf(number).toCharArray();
return getTranslationCount(numbers);
}
private static int getTranslationCount(char[] numbers) {
int length = numbers.length;
int[] counts = new int[length];
for (int i = length - 1; i >= 0; i--) {
int count = 0;
if (i < length - 1)
count += counts[i + 1];
else
count += 1;
if (i < length - 1) {
int sum = Integer.valueOf(numbers[i] + String.valueOf(numbers[i + 1]));
if (sum >= 10 && sum <= 25) {
if (i < length - 2)
count += counts[i + 2];
else
count += 1;
}
}
counts[i] = count;
}
return counts[0];
}
public static void main(String[] args) {
int number = 12258;
System.out.println(E46Translation.getTranslationCount(number));
}
}