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".
# n,k=map(int,raw_input().split())
# #(n/2)+1 tak odd , uske baad even
# if(n%2==0):
#     if(k>n/2):
#         print 2+(k-(n/2)-1)*2
#     elif(k==n/2):
#         print n-1
#     else:
#         print 1+(k-1)*2
# elif(n%2==1):
#     if k>((n/2)+1):
#         print 2+(k-(n/2)-2)*2
#     elif(k==n/2):
#         print n-2
#     elif k==(n/2+1):
#         print n
#     else:
#         print 1+(k-1)*2
s=(str(raw_input()))
if(s.count('4')+s.count('7')==7):
    print "YES"
elif(s.count('4')+s.count('7')==4):
    print "YES"
else:
    print "NO"
#print str(str(s[0]).capitalize())+''.join(map(str,(s[1:])))
# lower_count = sum(map(str.islower, s))
# upper_count = sum(map(str.isupper, s))
# if(lower_count>=upper_count):
#     print s.lower()
# else:
#     print s.upper()
# s=list(set(list(s)))
# if(len(s)%2==0):
#     print "CHAT WITH HER!"
#
# else:
#     print "IGNORE HIM!"
# i=0
# p=''
# while(i<len(s)):
#     if(s[i]=='-' and s[i+1]=='.'):
#         p+='1'
#         i+=2
#         continue
#     elif(s[i]=='-' and s[i+1]=='-'):
#         p+='2'
#         i+=2
#         continue
#     elif(s[i]=='.'):
#         p+='0'
#         i+=1
# print p
# t=str(raw_input())
# o=''
# for i in range(len(s)):
#     if(s[i]==t[i]):
#         o+='0'
#     else:
#         o+='1'
# print o
