Petya loves lucky numbers. We all know that lucky numbers are the positive integers whose decimal representations contain only the lucky digits 4 and 7. For example, numbers 47, 744, 4 are lucky and 5, 17, 467 are not.

Unfortunately, not all numbers are lucky. Petya calls a number nearly lucky if the number of lucky digits in it is a lucky number. He wonders whether number n is a nearly lucky number.

Input

The only line contains an integer n (1 ≤ n ≤ 1018).

Please do not use the %lld specificator to read or write 64-bit numbers in С++. It is preferred to use the cin, cout streams or the %I64d specificator.

Output

Print on the single line "YES" if n is a nearly lucky number. Otherwise, print "NO" (without the quotes).

Examples

Input

40047


Output

NO


Input

7747774


Output

YES


Input

1000000000000000000


Output

NO

Note

In the first sample there are 3 lucky digits (first one and last two), so the answer is "NO".

In the second sample there are 7 lucky digits, 7 is lucky number, so the answer is "YES".

In the third sample there are no lucky digits, so the answer is "NO".
_1 = '236a'
# count = 0
# l = [list(map(int, input().split())) for i in range(5)]
# for i in range(5):
#     for j in range(5):
#         if l[i][j] == 1:
#
#             if i > 2:
#                 count += i - 2
#             elif i < 2:
#                 count += 2 - i
#             if j > 2:
#                 count += j - 2
#             elif j < 2:
#                 count += 2 - j
# print(count)
_2 = '339a'
# n = list(map(str, input().split('+')))
# n.sort()
# print('+'.join(n))
_3 = '266a'
# count = 0
# t = 0
# n1 = int(input())
# n = list(str(input()))
# for i in range(1,n1,1):
#     if n[i] == n[i-1]:
#         count +=1
# print(count)
_4 = '96a'
# flag = False
# flag1 = False
# p0=0
# p1=0
# l = list(str(input()))
# for i in l:
#     if i == '0':
#         p0 += 1
#         if p0 >= 7:
#             flag = True
#     else:
#         p0 = 0
# for i in l:
#     if i == '1':
#         p1 += 1
#         if p1 >= 7:
#             flag1 = True
#     else:
#         p1 = 0
# if flag == True or flag1 == True:
#     print("YES")
# else:
#     print("NO")
_5 = '236a'
# l = list(str(input()))
# if len(set(l)) % 2 == 0:
#     print("CHAT WITH HER!")
# else:
#     print("IGNORE HIM!")
_6 = '281a'
# l = list(str(input()))
# t = l[0].upper()
# print(t + ''.join(l[1:]))
_7 = '546a'
# s = 0
# a,b = map(int, input().split())
# while a <= b:
#     a*=3
#     b*=2
#     s+=1
# print(s)
_8 = '116a'
# t = 0
# l1 = []
# n = int(input())
# l = [list(map(int, input().split())) for i in range(n)]
# for i in range(n):
#     t += l[i][1]
#     t -= l[i][0]
#     l1.append(t)
# print(max(l1))
_9 = '977a'
# n,k = map(int, input().split())
# for i in range(k):
#     if n % 10 == 0:
#         n/=10
#     else:
#         n-=1
# print(int(n))
_10 = '266b'
# n = str(input())
# l = list(n)
# low = 0
# up = 0
# for i in l:
#     if i.islower():
#         low += 1
#     else:
#         up += 1
# if low >up:
#     print(n.lower())
# elif low < up:
#     print(n.upper())
# else:
#     print(n.lower())
_11 = '110a'
n = list(str(input()))
l=[]
for i in range(len(n)):
    if n[i] == '4' or n[i] == '7':
        l.append(i)
if len(l) == 4 or len(l) == 7:
    print('YES')
else:
    print('NO')
