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

int main(){
  string s;cin>>s;s+="################";
  int ans=0;
  for(int i=0;s[i]!='#';i++)ans+=s.substr(i,4)=="ZONe";
  cout<<ans<<endl;
}

#include <algorithm>
#include <cassert>
#include <cmath>
#include <deque>
#include <iostream>
#include <iterator>
#include <limits>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <string>
#include <tuple>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>

using namespace std;
using i64 = int64_t;
using vi64 = vector<i64>;
using vvi64 = vector<vi64>;
using vvvi64 = vector<vvi64>;
using u64 = uint64_t;

#define rep(i, s, n) for (i64 i = (s); i < (n); ++i)

// constexpr i64 mod{1000000007};
// constexpr i64 izero{0};
// constexpr i64 ione{1};
// constexpr u64 uone{1};
// constexpr i64 di[]{0, 1, 0, -1}, dj[]{1, 0, -1, 0};

void run() {
  string s;
  cin >> s;
  i64 ret{0};
  rep(i, 0, 4){
    i64 c{0};
    rep(j, i, 9){
      if(s.substr(j, 4) == "ZONe"){
        ++c;
      }
    }
    ret = max(ret, c);
  }
  cout << ret << endl;
}

int main() {
  cin.tie(nullptr);
  cout.precision(std::numeric_limits<double>::max_digits10);
  cerr.precision(std::numeric_limits<double>::max_digits10);
  clog.precision(std::numeric_limits<double>::max_digits10);
  run();
  return 0;
}
