Problem:
Score : 200 points

Problem Statement

Takahashi is competing in a sumo tournament.
The tournament lasts for 15 days, during which he performs in one match per day.
If he wins 8 or more matches, he can also participate in the next tournament.

The matches for the first k days have finished.
You are given the results of Takahashi's matches as a string S consisting of o and x.
If the i-th character in S is o, it means that Takahashi won the match on the i-th day; if that character is x, it means that Takahashi lost the match on the i-th day.

Print YES if there is a possibility that Takahashi can participate in the next tournament, and print NO if there is no such possibility.

Constraints

1 \leq k \leq 15

S is a string of length k consisting of o and x.

Input

Input is given from Standard Input in the following format:

S

Output

Print YES if there is a possibility that Takahashi can participate in the next tournament, and print NO otherwise.

Sample Input 1

oxoxoxoxoxoxox

Sample Output 1

YES

Takahashi has 7 wins and 7 losses before the last match. If he wins that match, he will have 8 wins.

Sample Input 2

xxxxxxxx

Sample Output 2

NO

Solution in C# (Mono 4.6.2.0) (judge verdict: Accepted)

using System;
using System.IO;
using System.Linq;

namespace Sandbox
{
    class Program
    {
        static void Main(string[] args)
        {
            var scanner = new Scanner();
            var s = scanner.GetNext();

            var len = s.Length;
            var onum = s.Count(c => c == 'o');

            var b = ((15 - len) + onum) >= 8;

            Console.WriteLine(b ? "YES" : "NO");
        }
    }

    #region String Scanner
    public class Scanner
    {
        private const char Separator = ' ';
        private readonly StreamReader _Stream = new StreamReader(Console.OpenStandardInput());
        private int _Pos;
        private string[] _Line = new string[0];

        #region get a element
        public string GetNext()
        {
            // ReSharper disable once InvertIf
            if (this._Pos >= this._Line.Length)
            {
                // ReSharper disable once PossibleNullReferenceException
                this._Line = this._Stream.ReadLine().Split(Separator);
                this._Pos = 0;
            }
            return this._Line[this._Pos++];
        }
        public int GetNextAsInt()
        {
            return int.Parse(this.GetNext());
        }
        public long GetNextAsLong()
        {
            return long.Parse(this.GetNext());
        }
        public double GetNextAsDouble()
        {
            return double.Parse(this.GetNext());
        }
        #endregion

        #region get array
        public string[] ToArrayFromNextLine()
        {
            if (this._Pos >= this._Line.Length)
            {
                // ReSharper disable once PossibleNullReferenceException
                this._Line = this._Stream.ReadLine().Split(Separator);
            }

            this._Pos = this._Line.Length;
            return this._Line;
        }
        public int[] ToIntArrayFromNextLine()
        {
            return ToIntArray(this.ToArrayFromNextLine());
        }
        public long[] ToLongArrayFromNextLine()
        {
            return ToLongArray(this.ToArrayFromNextLine());
        }
        public double[] ToDoubleArrayFromNextLine()
        {
            return ToDoubleArray(this.ToArrayFromNextLine());
        }
        #endregion

        #region convert array
        private static int[] ToIntArray(string[] array)
        {
            var result = new int[array.Length];
            for (var i = 0; i < array.Length; i++)
            {
                result[i] = int.Parse(array[i]);
            }
            return result;
        }
        private static long[] ToLongArray(string[] array)
        {
            var result = new long[array.Length];
            for (var i = 0; i < array.Length; i++)
            {
                result[i] = long.Parse(array[i]);
            }
            return result;
        }
        private static double[] ToDoubleArray(string[] array)
        {
            var result = new double[array.Length];
            for (var i = 0; i < array.Length; i++)
            {
                result[i] = double.Parse(array[i]);
            }
            return result;
        }
        #endregion
    }
    #endregion
}