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++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <bits/stdc++.h>
#define rep(i,cc,n) for(int i=cc;i<=n;++i)
using namespace std;

int main() {
  string S;
  cin >> S;

  vector<vector<string>> v = {
    {"k", "eyence"},
    {"ke", "yence"},
    {"key", "ence"},
    {"keye", "nce"},
    {"keyen", "ce"},
    {"keyenc", "e"},
    {"keyence", ""},
  };

  string ans = "NO";
  rep(i,0,v.size()-1) {
    string l = v[i][0];
    string r = v[i][1];
    bool lok = false, rok = false;
    rep(j,0,S.size()-1) {
      if (S.substr(j,l.size()) == l) {
        lok = true;
        j += l.size();
      }

      if (lok && S.substr(j,r.size()) == r) {
        rok = true;
      }

      if (lok && rok) ans = "YES";
    }
  }

  cout << ans << endl;
  return 0;
}