import java.util.*; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); Map<String, String> m = new HashMap<>();//字典“1”映射“A”,“26”映射“Z” for(int i = 1; i <= 26; ++i){ StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); sb1.append(i); sb2.append((char)('A' + i - 1)); m.put(String.valueOf(sb1), String.valueOf(sb2)); } while (sc.hasNextLine()) { String s = sc.nextLine(); g(f(s, m));//用方法f求答案,用方法g输出答案 System.out.println(); } } public static List<String> f(String s, Map<String, String> m){ List<String> r = new ArrayList<>(); if(s.length() == 1){ if(m.containsKey(s)) r.add(m.get(s)); else r.add("0");//不规整的串尾用“0”标记 return r; } if(s.length() == 2){ if(m.containsKey(s)) r.add(m.get(s)); StringBuilder sb0 = new StringBuilder(); StringBuilder sb1 = new StringBuilder(); sb0.append(s.charAt(0)); sb1.append(s.charAt(1)); StringBuilder ans = new StringBuilder(); if(m.containsKey(String.valueOf(sb0))) ans.append(m.get(String.valueOf(sb0))); if(m.containsKey(String.valueOf(sb1))) ans.append(m.get(String.valueOf(sb1))); if(ans.length() == 2) r.add(String.valueOf(ans)); else r.add("0");//不规整的串尾用“0”标记 return r; } StringBuilder sb0 = new StringBuilder(); StringBuilder sb1 = new StringBuilder(); sb0.append(s.charAt(0)); sb1.append(s.charAt(0)); sb1.append(s.charAt(1)); if(m.containsKey(String.valueOf(sb0))){ StringBuilder rest = new StringBuilder(s.substring(1)); List<String> bwt = f(String.valueOf(rest), m); for(String i : bwt){ r.add(String.valueOf(new StringBuilder().append(m.get(String.valueOf(sb0))).append(i))); } } if(m.containsKey(String.valueOf(sb1))){ StringBuilder rest = new StringBuilder(s.substring(2)); List<String> bwt = f(String.valueOf(rest), m); for(String i : bwt){ r.add(String.valueOf(new StringBuilder().append(m.get(String.valueOf(sb1))).append(i))); } } if((!m.containsKey(String.valueOf(sb0)))&&(!m.containsKey(String.valueOf(sb1)))){ r.add("0");//不规整的串首用“0”标记 } return r; } public static void g(List<String> v){//用来处理输出的方法g for(int i = 0; i < v.size(); ++i){ if(v.get(i).length() == 0 || v.get(i).contains("0")){//删除含“0”的串 v.remove(i); --i; } } System.out.print(v.size()); } }