import java.util.*;
import java.lang.*;

// ぼくのかんがえたあんごう
class Main {
	public static void main (String[] args) throws java.lang.Exception {
    	List<Character> あんごうせっていりすと = new ArrayList<>();
		for (char もじ : C.もじせっと.toCharArray()) あんごうせっていりすと.add(もじ);
		Collections.shuffle(あんごうせっていりすと);
		StringBuilder ばっふぁ = new StringBuilder();
		for (Character もじ : あんごうせっていりすと) ばっふぁ.append(もじ);
		
		String あんごうせってい = ばっふぁ.toString();
		
		C いんすたんす = new C(ばっふぁ.toString());
		
		String ひらぶん = "はろー、わーるど。";
		
		System.out.println("あんごうせってい：" + あんごうせってい);
		System.out.println("ひらぶん　　　　：" + ひらぶん);
		
		String あんごうぶん = いんすたんす.あんごうかする(ひらぶん);
		
		System.out.println("あんごうぶん　　：" + あんごうぶん);
		
		String ふくごうぶん = いんすたんす.ふくごうかする(あんごうぶん);
		
		System.out.println("ふくごうぶん　　：" + ふくごうぶん);
	}
    
    private static class C {
		public static final String もじせっと = "　、。ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんゔゕゖー０１２３４５６７８９";
		
		private final Map<Character, Character> あんごうかまっぷ;
		private final Map<Character, Character> ふくごうかまっぷ;
		
		public C(String あんごうせってい) {
			あんごうかまっぷ = new HashMap<>();
			ふくごうかまっぷ = new HashMap<>();
			
			if (あんごうせってい.length() != もじせっと.length()) throw new IllegalArgumentException();
			for (int あい = 0; あい < もじせっと.length(); あい ++) {
				あんごうかまっぷ.put(もじせっと.charAt(あい), あんごうせってい.charAt(あい));
				ふくごうかまっぷ.put(あんごうせってい.charAt(あい), もじせっと.charAt(あい));
			}
		}
		
		public String あんごうかする(String ひらぶん) {
			StringBuilder ばっふぁ = new StringBuilder();
			for (char もじ : ひらぶん.toCharArray())
				if (あんごうかまっぷ.containsKey(もじ)) ばっふぁ.append(あんごうかまっぷ.get(もじ));
				else ばっふぁ.append(もじ);
			return ばっふぁ.toString();
		}
		
		public String ふくごうかする(String あんごうぶん) {
			StringBuilder ばっふぁ = new StringBuilder();
			for (char もじ : あんごうぶん.toCharArray())
				if (ふくごうかまっぷ.containsKey(もじ)) ばっふぁ.append(ふくごうかまっぷ.get(もじ));
				else ばっふぁ.append(もじ);
			return ばっふぁ.toString();
		}
	}
}