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 static System.Console;

namespace B
{
  class Program
  {
    static void Main(string[] args)
    {
      string input = ReadLine();

      string keystr = "keyence";

      bool flag = false;

      for(int i = 0; i<6; i++) {
        string frontstr = keystr.Substring(0, i);
        string backstr = keystr.Substring(i, 7-i);
        int frontidx = input.IndexOf(frontstr);
        if(frontidx == -1) break;
        int backidx = input.IndexOf(backstr, frontidx);
        if(frontidx == 0 || backidx == input.Length-1)
          if(frontidx != -1 && backidx != -1) {
              flag = true;
              break;
            }
      }

      if(input.IndexOf(keystr) != -1)
        if(input.IndexOf("k") != input.IndexOf(keystr))
          if(input.IndexOf(keystr)-1 != input.Length-7-1)
            flag = false;

      WriteLine(flag ? "YES" : "NO");
    }
  }
}