import
java.util.HashMap;
import
java.util.Map;
public
class
StringConversion {
static
boolean
canConvert(String s1, String s2) {
Map<Character, Integer> freq1 =
new
HashMap<>();
Map<Character, Integer> freq2 =
new
HashMap<>();
Map<Integer, Integer> unmap1 =
new
HashMap<>();
Map<Integer, Integer> unmap2 =
new
HashMap<>();
if
(s1.length() != s2.length())
return
false
;
for
(
char
i : s1.toCharArray()) {
freq1.put(i, freq1.getOrDefault(i,
0
) +
1
);
}
for
(
char
i : s2.toCharArray()) {
freq2.put(i, freq2.getOrDefault(i,
0
) +
1
);
}
for
(
int
i : freq2.values()) {
unmap2.put(i, unmap2.getOrDefault(i,
0
) +
1
);
}
for
(
int
i : freq1.values()) {
unmap1.put(i, unmap1.getOrDefault(i,
0
) +
1
);
}
for
(
char
i : freq1.keySet()) {
if
(!freq2.containsKey(i))
return
false
;
}
for
(
char
i : freq2.keySet()) {
if
(!freq1.containsKey(i))
return
false
;
}
for
(Map.Entry<Integer, Integer> entry : unmap1.entrySet()) {
int
key = entry.getKey();
if
(!unmap2.containsKey(key) || !unmap2.get(key).equals(entry.getValue()))
return
false
;
}
return
true
;
}
public
static
void
main(String[] args) {
String s1 =
"cabbba"
;
String s2 =
"abbccc"
;
System.out.println(canConvert(s1, s2) ?
"True"
:
"False"
);
}
}