#include <bits/stdc++.h>
using namespace std;

using ll=long long;
using vpii=vector<pair<int,int>>;
using vpll=vector<pair<ll,ll>>;
using Graph_1=vector<vector<int>>;


const ll INF=1e18;
const int inf=1e9;
const double eps=1e-10;
const double pi=acos(-1);
const ll mod=1e9+7;
const ll MOD=998244353;

//数学関連
int num_order(ll N){
  int res=0;
  
  while(N>0){
    N/=10;
    res++;
  }
  
  return res;
}
template<typename T>
T GCD(T A,T B){
  if(B==0) return A;
  else return GCD(B,A%B);
}
template<typename T>
ll LCM(T A,T B){
  return A/GCD(A,B)*B;
}
template<typename T>
vpll prime_factorize(T N){
  vpll res;
  
  for(ll i=2;i*i<=N;i++){
    if(N%i!=0) continue;
    
    ll ex=0;
    while(N%i==0){
      ex++;
      N/=i;
    }
    
    res.push_back({i,ex});
  }
  
  if(N!=1) res.push_back({N,1});
  
  return res;
}
template<typename S,typename T,typename U>
ll modpow(S x,T p,U y){
  ll res=1;
  
  while(p>0){
    if(p&1) res=res*x%y;
    x=x*x%y;
    p>>=1;
  }
  
  return res;
}
template<typename S,typename T>
ll small_nCk(S n,T k){
  ll res=1,fact=1;
  
  for(int i=0;i<k;i++){
    res=res*(n-i)/fact;
    fact++;
  }
  
  return res;
}

//データ構造
struct UnionFind {
    //自身が親であれば、その集合に属する頂点数に-1を掛けたもの
    //そうでなければ親のid
    vector<int> r;
 
    UnionFind(int N){
        r=vector<int>(N,-1);
    }
 
    int root(int x){
        if (r[x]<0) return x;
        return r[x]=root(r[x]);
    }
 
    bool unite(int x,int y){
        x=root(x);
        y=root(y);
        if(x==y) return false;
        if(r[x]>r[y]) swap(x,y);
        r[x]+=r[y];
        r[y]=x;
        return true;
    }
 
    int size(int x){
        return -r[root(x)];
    }
};

struct Egde{
  int to;
  ll W;
  Egde(int to,ll W) : to(to),W(W) {}
};
 
using Graph_2=vector<vector<Egde>>;
 
int main(){
  
  string S;
  cin>>S;
  
  int ans=0;
  
  
  for(int i=0;i<S.size()-3;i++){
    if(S[i]=='Z'&&S[i+1]=='O'&&S[i+2]=='N'&&S[i+3]=='e') ans++;
  }
  
  cout<<ans<<endl;
}
#include<iostream>
#include<string>
using namespace std;

int main() {
    string s;
    cin >> s;
    int t = s.size();
    for (int i = 0; i < t; i++) {
        if (i%2 == 0 && isupper(s[i])) {cout << "No" << endl; return 0;}
        if (i%2 == 1 && islower(s[i])) {cout << "No" << endl; return 0;}
    }
    cout << "Yes" << endl;
    return 0;
}