#解法3

import collections

w = eval(input())

s = list(w)

c = collections.Counter(s)

l = list(c.most_common())

#出現回数のリストがl

flag = 0

for i in range(len(l)):

  if l[i][1]%2 == 0:

    continue

  else:

    flag += 1

    break

if flag == 0:

  print("Yes")

else:

  print("No")
#解法2

w = eval(input())

ls = [0]*26

#各文字の出現回数リスト

for i in range(len(w)):

  ls[ord(w[i])-97] += 1

  #ASCIIコードに対応した配列を+1する

flag = 0

for i in range(len(ls)):

  if ls[i]%2 == 0:

    continue

  else:

    flag += 1

    break

if flag == 0:

  print("Yes")

else:

  print("No")
# 解法3
import collections

w = eval(input())
s = list(w)
c = collections.Counter(s)
l = list(c.most_common())
# 出現回数のリストがl
flag = 0
for i in range(len(l)):
    if l[i][1] % 2 == 0:
        continue
    else:
        flag += 1
        break
if flag == 0:
    print("Yes")
else:
    print("No")

# 解法2
w = eval(input())
ls = [0] * 26
# 各文字の出現回数リスト
for i in range(len(w)):
    ls[ord(w[i]) - 97] += 1
    # ASCIIコードに対応した配列を+1する
flag = 0
for i in range(len(ls)):
    if ls[i] % 2 == 0:
        continue
    else:
        flag += 1
        break
if flag == 0:
    print("Yes")
else:
    print("No")

-# 解法3 -import collections - +# 解法2 -s = list(w) -c = collections.Counter(s) -l = list(c.most_common()) -# 出現回数のリストがl +ls = [0] * 26 +# 各文字の出現回数リスト +for i in range(len(w)): +    ls[ord(w[i]) - 97] += 1 +    # ASCIIコードに対応した配列を+1する -for i in range(len(l)): -    if l[i][1] % 2 == 0: +for i in range(len(ls)): +    if ls[i] % 2 == 0: