#include <bits/stdc++.h>
using namespace std;
template <typename T>
std::vector<T> slice(std::vector<T> const &v, int m, int n) {
  auto first = v.cbegin() + m;
  auto last = v.cbegin() + n + 1;
  std::vector<T> vec(first, last);
  return vec;
}
template <class T>
bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool chmin(T &a, const T &b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
T get() {
  T s;
  cin >> s;
  return (s);
}
template <class T>
vector<T> getv(int n) {
  vector<T> v(n);
  for (long long i = 0; i < (long long)(n); i++) cin >> v[i];
  return v;
}
void print(int a) { cout << a << endl; }
void print(long long a) { cout << a << endl; }
void print(string a) { cout << a << endl; }
void print(char a) { cout << a << endl; }
void print(double a) { cout << a << endl; }
void print(double a, int dig) { cout << std::setprecision(dig) << a << endl; }
template <class T>
ostream &operator<<(ostream &o, const vector<T> &v) {
  o << "{";
  for (int i = 0; i < (int)v.size(); i++) o << (i > 0 ? ", " : "") << v[i];
  o << "}";
  return o;
}
template <class T = int>
void print(vector<T> v) {
  cout << v << endl;
}
template <class T = int>
void print2dVec(vector<vector<T>> v2d) {
  for (vector<T> v : v2d) {
    print(v);
  }
}
void YesNo1(bool i = true) { return print(i ? "Yes" : "No"); }
void YESNO2(bool i = true) { return print(i ? "YES" : "NO"); }
template <class T>
void debug(T &var, int nest = 0, string before = "") {
  cout << string("          ", nest) << before;
  print(var);
}
const long long INF = 1e18;
const int MOD = 1000000007;
int factorial(int k) {
  int sum = 1;
  for (int i = 1; i <= k; ++i) {
    sum *= i;
  }
  return sum;
}
long long gcd(long long a, long long b) {
  if (b == 0) {
    return a;
  }
  return gcd(b, a % b);
}
long long lcm(long long a, long long b) {
  long long temp = gcd(a, b);
  return temp ? (a / temp * b) : 0;
}
int dx[2] = {1, 0};
int dy[2] = {0, 1};
vector<vector<int>> counter;
int h, w;
void doDP(vector<vector<char>> &G, int x, int y) {
  for (long long i = 0; i < (long long)(2); i++) {
    int newX = x + dx[i];
    int newY = y + dy[i];
    if (!(0 <= newX && newX < w && 0 <= newY && newY < h)) continue;
    if (G[y][x] == '.' && G[newY][newX] == '#') {
      chmin(counter[newY][newX], counter[y][x] + 1);
    } else {
      chmin(counter[newY][newX], counter[y][x]);
    }
  }
}
void Main() {
  string s = get<string>();
  string keyence = "keyence";
  for (int bit = 0; bit < (1 << s.size()); ++bit) {
    string newStr = "";
    for (long long i = 0; i < (long long)(s.size()); i++) {
      if (bit & (1 << i)) {
        newStr += s[i];
      }
    }
    if (newStr == keyence) {
      print("YES");
      return;
    }
  }
  print("NO");
}
signed main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  Main();
}
