class Solution:
def areAlmostEqual(self, s1: str, s2: str) -> bool:
if s1 == s2:
return True
if len(s1) != len(s2):
return False
if set(s1) != set(s2):
return False
if list(s1).sort() != list(s2).sort():
return False
d = 0
s1uc, s2uc = set(), set()
for i in range(len(s1)):
if s1[i] != s2[i]:
s1uc.add(s1[i])
s2uc.add(s2[i])
d += 1
if d > 2:
return False
return d == 2 and s1uc == s2uc