use std::cmp::min;
fn read<T: std::str::FromStr>() -> T {
    let mut s = String::new();
    std::io::stdin().read_line(&mut s).ok();
    s.trim().parse().ok().unwrap()
}
fn read_vec<T: std::str::FromStr>() -> Vec<T> {
    read::<String>()
        .split_whitespace()
        .map(|e| e.parse().ok().unwrap())
        .collect()
}
fn read_vec2<T: std::str::FromStr>(n: u32) -> Vec<Vec<T>> {
    (0..n).map(|_| read_vec()).collect()
}
fn main(){
    let s:Vec<char> = read::<String>().chars().collect();
    let master:Vec<char> = "keyence".chars().collect();
    let mut index: usize = 0;
    let mut exist = false;
    for j in 0..s.len() {
        if s[j as usize] == master[index] {
            if index == 6 {
                exist = true;
                break;
            }
            index += 1;
        } else {
            let sub = master.clone().into_iter().skip(index).collect::<String>();
            let t = s.clone().into_iter().skip(j).collect::<String>();
            // println!("{}",sub);
            // println!("{}",t);
            if t.contains(&sub) {
                exist = true;
            }
            index = 0;
        }
    }
    let ans  = if exist {
        "YES"
    } else {
        "NO"
    };
    println!("{}",ans);
}