package contest200401; import java.io.PrintWriter; import java.util.Arrays; import java.util.Scanner; public class H3 { static Scanner in; static PrintWriter out; static String INPUT = ""; static void solve() { Analyzer a = new Analyzer(); a.add("う く く 笑 に き し ん し あ ", "input"); a.add("う 笑 し ん し あ に き し ん し あ ", "output"); a.add("た ん う し う き に き し ぷ く ん ", "sample"); a.add("う あ ", "b"); a.add("ん 笑 ", "c"); a.add("た ぷ ", "d"); a.add("ぷ に ", "f"); a.add("し き ", "g"); a.add("あ く ", "h"); a.add("あ 笑 ", "j"); a.add("う ん ", "k"); a.add("ぷ 笑 ", "q"); a.add("た き ", "r"); a.add("う う ", "v"); a.add("う た ", "w"); a.add("き 笑 ", "x"); a.add("に く ", "y"); a.add("笑 笑 ", "z"); a.validate(); String D = "に き た き う 笑 う あ し ぷ く ん う き  た ん し あ う し し あ く ん う き く ん く 笑 し あ\n" + "う く く 笑 \"う し た ぷ に き あ 王 国 笑\"、 う し  た ん に き く ん ん 笑 う く う し し ぷ  う あ う し た ぷ う く し き う く し あ  \n" + "く 笑 し ん う き う あ く ん た き  た き く ん に き た き く ん た ん く ん く 笑 し あ う し し あ う く う 笑 く 笑  う く た ん  \n" + "し ん た ん く ん た ぷ 。 し あ あ く う く た ん  う あ う し た ぷ う く し き う く し あ  く 笑 し ん う き う あ く ん た き \n" + "た き く ん に き た き く ん た ん く ん く 笑 し あ う し し あ う く う 笑 く 笑  う く た ん  く ん き 笑 に き た き く ん た ん た ん く ん た ぷ   \n" + "し ん た ん う く く 笑 し き \"う し た ぷ に き あ く ん 笑\"。 に く う 笑 し ん た き  し あ う し た ん う ん  う く た ん  \n" + "し あ う 笑  た き く ん に き た き く ん た ん く ん く 笑 し あ  し あ あ く く ん  し き う く う う く ん く 笑  \n" + "た ん し あ た き う く く 笑 し き  う 笑 ぷ に  し ぷ う 笑 う た く ん た き ん 笑 う し た ん く ん  く ん く 笑 し き し ぷ う く た ん あ く  \n" + "し ぷ く ん し あ し あ く ん た き た ん  う し た ん  し あ あ く う く た ん  う あ う し た ぷ う く し き う く し あ  く 笑 し ん う き う あ く ん た き  \n" + "た き く ん に き た き く ん た ん く ん く 笑 し あ う し し あ う く う 笑 く 笑。\n" + "\n" + "う く く 笑 に き し ん し あ\n" + "た\n" + " \n" + "ん\n" + "\n" + "う あ\n" + "≤\n" + "|\n" + "た ん\n" + "|\n" + "≤\n" + "ぷ に た き に く く ん\n" + "\n" + "た ん  う く た ん  う し  う 笑 ぷ に  し ぷ う 笑 う た く ん た き ん 笑 う し た ん く ん   く ん く 笑 し き し ぷ う く た ん あ く  \n" + "し ぷ く ん し あ し あ く ん た き た ん\n" + "\n" + "う 笑 し ん し あ に き し ん し あ\n" + "に き た き う く く 笑 し あ  し あ あ く く ん  う し く 笑 た ん う た く ん た き。\n" + "\n" + "た ん う し う き に き し ぷ く ん\n" + "た ん う し う き に き し ぷ く ん  う し\n" + "う く く 笑 に き し ん し あ\n" + "う う ぷ に た ぷ し き 笑 笑 う き ぷ 笑 き 笑 く 笑 う き \n" + "う 笑 し ん し あ に き し ん し あ\n" + "う う ぷ に た ぷ し き 笑 笑 う き ぷ 笑 き 笑 く 笑 う き \n" + "た ん う し う き に き し ぷ く ん  う あ\n" + "う く く 笑 に き し ん し あ\n" + "た き う う \n" + "う 笑 し ん し あ に き し ん し あ\n" + "た き う う \n" + "た ん う し う き に き し ぷ く ん  ん 笑\n" + "う く く 笑 に き し ん し あ\n" + "し ぷ う う う し う し に き う た \n" + "う 笑 し ん し あ に き し ん し あ\n" + "し ぷ う う う し う し に き う た \n" + "た ん う し う き に き し ぷ く ん  た ぷ\n" + "う く く 笑 に き し ん し あ\n" + "き 笑 あ 笑 う た き 笑 し ぷ た き あ く し ん \n" + "う 笑 し ん し あ に き し ん し あ\n" + "き 笑 あ 笑 う た き 笑 し ぷ た き あ く し ん \n" + "た ん う し う き に き し ぷ く ん  く ん\n" + "う く く 笑 に き し ん し あ\n" + "た ん う き し ん \n" + "う 笑 し ん し あ に き し ん し あ\n" + "た ん う き し ん \n" + "た ん う し う き に き し ぷ く ん  ぷ に\n" + "う く く 笑 に き し ん し あ\n" + "た ん ぷ に ん 笑 う ん う ん あ く き 笑 あ く う き に き \n" + "う 笑 し ん し あ に き し ん し あ\n" + "た ん ぷ に ん 笑 う ん う ん あ く き 笑 あ く う き に き \n" + "た ん う し う き に き し ぷ く ん  し き\n" + "う く く 笑 に き し ん し あ\n" + "し あ き 笑 \n" + "う 笑 し ん し あ に き し ん し あ\n" + "し あ き 笑 \n" + "た ん う し う き に き し ぷ く ん  あ く\n" + "う く く 笑 に き し ん し あ\n" + "し き う た う し ぷ に う 笑 に く ぷ に く ん \n" + "う 笑 し ん し あ に き し ん し あ\n" + "し き う た う し ぷ に う 笑 に く ぷ に く ん \n" + "た ん う し う き に き し ぷ く ん  う く\n" + "う く く 笑 に き し ん し あ\n" + "う あ ぷ 笑 う く に き\n" + "う 笑 し ん し あ に き し ん し あ\n" + "う あ ぷ 笑 う く に き\n" + "た ん う し う き に き し ぷ く ん  あ 笑\n" + "う く く 笑 に き し ん し あ\n" + "ぷ 笑 た き た き \n" + "う 笑 し ん し あ に き し ん し あ\n" + "ぷ 笑 た き た き \n" + "た ん う し う き に き し ぷ く ん  う ん\n" + "う く く 笑 に き し ん し あ\n" + "う き た き た ん う た ぷ 笑 笑 笑 あ く\n" + "う 笑 し ん し あ に き し ん し あ\n" + "う き た き た ん う た ぷ 笑 笑 笑 あ く\n" + "た ん う し う き に き し ぷ く ん  し ぷ\n" + "う く く 笑 に き し ん し あ\n" + "あ く た き ん 笑 し ん く 笑 に き き 笑 \n" + "う 笑 し ん し あ に き し ん し あ\n" + "あ く た き ん 笑 し ん く 笑 に き き 笑 \n" + "た ん う し う き に き し ぷ く ん  う き\n" + "う く く 笑 に き し ん し あ\n" + "う う し ぷ あ 笑 笑 笑 \n" + "う 笑 し ん し あ に き し ん し あ\n" + "う う し ぷ あ 笑 笑 笑 \n" + "た ん う し う き に き し ぷ く ん  く 笑\n" + "う く く 笑 に き し ん し あ\n" + "く 笑 く ん し き し ん く 笑 に く し ぷ し き に き う し \n" + "う 笑 し ん し あ に き し ん し あ\n" + "く 笑 く ん し き し ん く 笑 に く し ぷ し き に き う し \n" + "た ん う し う き に き し ぷ く ん  う 笑\n" + "う く く 笑 に き し ん し あ\n" + "ん 笑 う し ぷ に し ん \n" + "う 笑 し ん し あ に き し ん し あ\n" + "ん 笑 う し ぷ に し ん \n" + "た ん う し う き に き し ぷ く ん  に き\n" + "う く く 笑 に き し ん し あ\n" + "う き う た \n" + "う 笑 し ん し あ に き し ん し あ\n" + "う き う た \n" + "た ん う し う き に き し ぷ く ん  ぷ 笑\n" + "う く く 笑 に き し ん し あ\n" + "う し う う た ぷ ぷ に し き あ 笑 く ん し き し あ \n" + "う 笑 し ん し あ に き し ん し あ\n" + "う し う う た ぷ ぷ に し き あ 笑 く ん し き し あ \n" + "た ん う し う き に き し ぷ く ん  た き\n" + "う く く 笑 に き し ん し あ\n" + "う た く ん う し \n" + "う 笑 し ん し あ に き し ん し あ\n" + "う た く ん う し \n" + "た ん う し う き に き し ぷ く ん  た ん\n" + "う く く 笑 に き し ん し あ\n" + "笑 笑 \n" + "う 笑 し ん し あ に き し ん し あ\n" + "笑 笑 \n" + "た ん う し う き に き し ぷ く ん  し あ\n" + "う く く 笑 に き し ん し あ\n" + "ぷ に し き た ぷ う う し き た ぷ \n" + "う 笑 し ん し あ に き し ん し あ\n" + "ぷ に し き た ぷ う う し き た ぷ \n" + "た ん う し う き に き し ぷ く ん  し ん\n" + "う く く 笑 に き し ん し あ\n" + "し あ し ぷ し ん く ん う 笑 う あ く ん あ く く 笑\n" + "う 笑 し ん し あ に き し ん し あ\n" + "し あ し ぷ し ん く ん う 笑 う あ く ん あ く く 笑\n" + "た ん う し う き に き し ぷ く ん  う う\n" + "う く く 笑 に き し ん し あ\n" + "し あ し ん し き ん 笑 う う し ん \n" + "う 笑 し ん し あ に き し ん し あ\n" + "し あ し ん し き ん 笑 う う し ん \n" + "た ん う し う き に き し ぷ く ん  う た\n" + "う く く 笑 に き し ん し あ\n" + "う き ぷ に う あ し ん \n" + "う 笑 し ん し あ に き し ん し あ\n" + "う き ぷ に う あ し ん \n" + "た ん う し う き に き し ぷ く ん  き 笑\n" + "う く く 笑 に き し ん し あ\n" + "た ぷ く 笑 あ 笑 た ぷ き 笑 う き た ぷ し ん う し う ん \n" + "う 笑 し ん し あ に き し ん し あ\n" + "た ぷ く 笑 あ 笑 た ぷ き 笑 う き た ぷ し ん う し う ん \n" + "た ん う し う き に き し ぷ く ん  に く\n" + "う く く 笑 に き し ん し あ\n" + "に く し あ た ぷ う く \n" + "う 笑 し ん し あ に き し ん し あ\n" + "に く し あ た ぷ う く \n" + "た ん う し う き に き し ぷ く ん  笑 笑\n" + "う く く 笑 に き し ん し あ\n" + "ぷ 笑 し あ た ぷ た き う く \n" + "う 笑 し ん し あ に き し ん し あ\n" + "ぷ 笑 し あ た ぷ た き う く \n" + "\n" + ""; D = D.replace("\n", " \n"); D = D.replace("\"", " \""); a.validate(); // tr(a.decode(D, true)); out.println(a.encode(in.next(), true)); } static class Analyzer { String[] table; int K; public Analyzer() { table = new String[128]; } public void add(String enc, String dec) { int le = enc.length(); int ld = dec.length(); assert le % ld == 0; int lK = le / ld; if(K == 0)K = lK; if(K != lK)throw new IllegalStateException(); for(int i = 0;i < dec.length();i++) { char c = dec.charAt(i); if(c == '*')continue; int code = c; String can = enc.substring(i*K, i*K+K); if(table[code] == null) { table[code] = can; }else if(!table[code].equals(can)) { throw new IllegalStateException(); } } } public void validate() { for(int i = 0;i < 128;i++) { if(table[i] == null)continue; for(int j = i+1;j < 128;j++) { if(table[j] != null && table[i].equals(table[j])) { throw new RuntimeException(i + " " + j + " " + table[j]); } } } } public String encode(String s, boolean strict) { StringBuilder sb = new StringBuilder(); for(int i = 0;i < s.length();i++) { char c = s.charAt(i); if(table[(int)c] == null) { if(strict) { throw new RuntimeException("" + i); }else { sb.append("?"); } }else { sb.append(table[(int)c]); } } return sb.toString(); } public String decode(String enc, boolean raw) { StringBuilder sb = new StringBuilder(); outer: for(int i = 0;i < enc.length();) { if(i+K <= enc.length()) { String t = enc.substring(i, i+K); for(int j = 0;j < table.length;j++) { if(table[j] != null && table[j].equals(t)) { sb.append((char)j); i+=K; continue outer; } } } if(raw) { sb.append(enc.charAt(i)); i++; }else { sb.append("?"); i+=K; } } return sb.toString(); } } public static void main(String[] args) throws Exception { in = INPUT.isEmpty() ? new Scanner(System.in) : new Scanner(INPUT); out = new PrintWriter(System.out); solve(); out.flush(); } static int ni() { return Integer.parseInt(in.next()); } static long nl() { return Long.parseLong(in.next()); } static double nd() { return Double.parseDouble(in.next()); } static void tr(Object... o) { if(INPUT.length() != 0)System.out.println(Arrays.deepToString(o)); } }