Problem:
Score : 200 points

Problem Statement

A string is called a KEYENCE string when it can be changed to keyence by removing its contiguous substring (possibly empty) only once.

Given a string S consisting of lowercase English letters, determine if S is a KEYENCE string.

Constraints

The length of S is between 7 and 100 (inclusive).

S consists of lowercase English letters.

Input

Input is given from Standard Input in the following format:

S

Output

If S is a KEYENCE string, print YES; otherwise, print NO.

Sample Input 1

keyofscience

Sample Output 1

YES

keyence is an abbreviation of key of science.

Sample Input 2

mpyszsbznf

Sample Output 2

NO

Sample Input 3

ashlfyha

Sample Output 3

NO

Sample Input 4

keyence

Sample Output 4

YES

Solution in C# (Mono 4.6.2.0) (judge verdict: Wrong Answer)

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Numerics;
using System.Text;
using System.Threading.Tasks;

namespace AtCorder
{
	public class Program
	{
		static void Main(string[] args)
		{
			string s = Console.ReadLine();
			string key = "keyence";
			bool removed = false;
			bool removing = false;
			int index = 0;
			int n = s.Length;
			for (int i = 0; i < n; i++) {
				if (s[i] == key[index]) {
					removing = false;
					if (index == 6) {
						if (removed == false || i == n - 1) {
							Console.WriteLine("YES");
							return;
						} else {
							removed = false;
							index = 0;
							i -= 1;
						}
					} else {
						++index;
					}
				} else {
					if (removing == false && removed) {
						removed = false;
						index = 0;
						i -= 1;
						continue;
					}

					removed = true;
					removing = true;
				}
			}

			Console.WriteLine("NO");
		}
	}
}