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 int long long
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
using namespace std;
constexpr int MOD = 1000000007;
constexpr int INF = numeric_limits<int>::max() / 2;
typedef pair<int,int> P;
using Graph = vector<vector<int>>;


signed main(){
	cin.tie(nullptr);
	ios::sync_with_stdio(false);

	string S, T;
	cin >> T;
	S = "keyence";
	int N = S.size();
	int M = T.size();
	bool ok = true;
	string Q1{}, Q2{};
	rep(i,min(N,M)){
		if(S[i] == T[i]){
			Q1 += S[i];
		}
		else break;
	}
	if(Q1 == S){
		cout << "YES" << endl;
		return 0;
	}
	for(int i = 1;i<min(N,M);i++){
		if(S[N-i] == T[M-i]){
			Q2 = S[N-i] + Q2;
		}
		else break;
	}
	if(Q1 + Q2 == S) cout << "YES" << endl;
	else cout << "NO" << endl;
}