Source class Solution { public boolean closeStrings(String word1, String word2) { if(word1.length() != word2.length()){ return false; } Map<Character, Integer> fMap1 = new HashMap<>(); Map<Character, Integer> fMap2 = new HashMap<>(); for(Character c : word1.toCharArray()){ fMap1.put(c, fMap1.getOrDefault(c, 0) + 1); } for(Character c : word2.toCharArray()){ fMap2.put(c, fMap2.getOrDefault(c, 0) + 1); } if(!fMap2.keySet().equals(fMap1.keySet())){ return false; } List<Integer> w1 = new ArrayList<>(fMap1.values()); List<Integer> w2 = new ArrayList<>(fMap2.values()); Collections.sort(w1); Collections.sort(w2); return w1.equals(w2); } }