S = eval(input())

T = eval(input())

dic = {}

flag = False

N = len(S)

for i in range(N):

    if S[i] in list(dic.keys()):

        if T[i] != dic[S[i]]:

            flag = True

            break

    else:

        dic[S[i]] = T[i]



if flag or len(list(dic.values())) != len(set(dic.values())):

    print("No")

else:

    print("Yes")
S = eval(input())

T = eval(input())

N = len(S)

d = {}

d1 = {}

for i in range(N):

    if S[i] in d:

        if d[S[i]] != T[i]:

            print('No')

            exit()

    elif T[i] in d1:

        if d1[T[i]] != S[i]:

            print('No')

            exit()

    else:

        d[S[i]] = T[i]

        d1[T[i]] = S[i]



print('Yes')



S = eval(input())
T = eval(input())
dic = {}
flag = False
N = len(S)
for i in range(N):
    if S[i] in list(dic.keys()):
        if T[i] != dic[S[i]]:
            flag = True
            break
    else:
        dic[S[i]] = T[i]
if flag or len(list(dic.values())) != len(set(dic.values())):
    print("No")
else:
    print("Yes")

S = eval(input())
T = eval(input())
N = len(S)
d = {}
d1 = {}
for i in range(N):
    if S[i] in d:
        if d[S[i]] != T[i]:
            print("No")
            exit()
    elif T[i] in d1:
        if d1[T[i]] != S[i]:
            print("No")
            exit()
    else:
        d[S[i]] = T[i]
        d1[T[i]] = S[i]
print("Yes")

-dic = {} -flag = False +d = {} +d1 = {} -    if S[i] in list(dic.keys()): -        if T[i] != dic[S[i]]: -            flag = True -            break +    if S[i] in d: +        if d[S[i]] != T[i]: +            print("No") +            exit() +    elif T[i] in d1: +        if d1[T[i]] != S[i]: +            print("No") +            exit() -        dic[S[i]] = T[i] -if flag or len(list(dic.values())) != len(set(dic.values())): -    print("No") -else: -    print("Yes") +        d[S[i]] = T[i] +        d1[T[i]] = S[i] +print("Yes")