using System; using System.Collections.Generic; using System.Text; public class Program { public void Proc(){ Reader.IsDebug = false; string inpt = Reader.ReadLine(); List ans = this.GetAns(inpt); Console.WriteLine(ans.Count); } Dictionary> dic = new Dictionary>(); private List GetAns(string inpt) { if(dic.ContainsKey(inpt)) { return dic[inpt]; } if(inpt.Length == 1) { List tmp = new List(); tmp.Add(inpt); return tmp; } List ans = new List(); List ret = this.GetAns(inpt.Substring(1)); foreach (string item in ret) { string newItem = inpt.Substring(0, 1) + item; ans.Add(newItem); } ret = this.GetAns(inpt.Substring(0, inpt.Length - 1)); foreach (string item in ret) { string newItem = inpt.Substring(inpt.Length - 1) + item; if(!ans.Contains(newItem)) { ans.Add(newItem); } } dic.Add(inpt, ans); return ans; } public static void Main(string[] args) { Program prg = new Program(); prg.Proc(); } } class Reader { public static bool IsDebug = true; private static System.IO.StringReader sr; public static string ReadLine() { if(IsDebug) { if(sr == null) { sr = new System.IO.StringReader(initStr.Trim()); } return sr.ReadLine(); } else { return Console.ReadLine(); } } public static int[] GetInt(char delimiter = ' ') { string[] inpt = ReadLine().Split(delimiter); int[] ret = new int[inpt.Length]; for(int i=0; i