# ABC110C - String Transformation

def main():

    s, t = [input().rstrip() for _ in range(2)]

    d = {}

    for i, j in zip(s, t):

        if i not in d:

            d[i] = j

        else:

            if d[i] != j:

                print("No")

                break

    else:

        print(("Yes" if len(set(s)) == len(set(t)) else "No"))





if __name__ == "__main__":

    main()
# ABC110C - String Transformation

def main():

    s, t = [input().rstrip() for _ in range(2)]

    d1, d2 = {}, {}

    for i, j in zip(s, t):

        if i not in d1:

            d1[i] = j

        if j not in d2:

            d2[j] = i

        if d1[i] != j or d2[j] != i:

            print("No")

            break

    else:

        print("Yes")





if __name__ == "__main__":

    main()
# ABC110C - String Transformation
def main():
    s, t = [input().rstrip() for _ in range(2)]
    d = {}
    for i, j in zip(s, t):
        if i not in d:
            d[i] = j
        else:
            if d[i] != j:
                print("No")
                break
    else:
        print(("Yes" if len(set(s)) == len(set(t)) else "No"))


if __name__ == "__main__":
    main()

# ABC110C - String Transformation
def main():
    s, t = [input().rstrip() for _ in range(2)]
    d1, d2 = {}, {}
    for i, j in zip(s, t):
        if i not in d1:
            d1[i] = j
        if j not in d2:
            d2[j] = i
        if d1[i] != j or d2[j] != i:
            print("No")
            break
    else:
        print("Yes")


if __name__ == "__main__":
    main()

-    d = {} +    d1, d2 = {}, {} -        if i not in d: -            d[i] = j -        else: -            if d[i] != j: -                print("No") -                break +        if i not in d1: +            d1[i] = j +        if j not in d2: +            d2[j] = i +        if d1[i] != j or d2[j] != i: +            print("No") +            break -        print(("Yes" if len(set(s)) == len(set(t)) else "No")) +        print("Yes")