#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
#include <string>
#include <sstream>
#include <set>
#include <functional>
#include <map>
#include <unordered_map>
#include <queue>
#include <iomanip>
#include <stack>
using namespace std;
typedef long long ll;
#define repi(i,a,b) for(ll i=a;i<b;i++)
#define rep(i,a) repi(i,0,a)
#define all(u) u.begin(),u.end()
using Interval = pair<ll,ll>;
using Graph = vector<vector<ll> >;
#define fi first
#define se second

struct Edge{
    ll to;
    ll w;
    Edge(ll to, ll w):to(to),w(w){}
};

using wGraph = vector<vector<Edge> >;


template<class T> void chmax(T& a, T b){
    if (a < b){
        a=b;
    }
}

template<class T> void chmin(T& a, T b){
    if (a > b){
        a=b;
    }
}

template<class T> bool chmaxb(T& a, T b){
    if (a < b){
        a=b;
        return true;
    }
    return false;
}

template<class T> bool chminb(T& a, T b){
    if (a > b){
        a = b;
        return true;
    }
    return false;
}

const ll INF = 1LL << 60;


ll a,b;

vector<ll> cnt(200010,0);

int main(){
    cin >> a >> b;

    repi(k,a,b+1){
        repi(i,1,b+1){
            if (i*i > k) break;
            if (k % i == 0){
                cnt[i]++;
                cnt[k/i]++;
                if (i == k/i){
                    cnt[i]--;
                }
            }
        }
    }

    ll ans = 0;

    rep(i,200010){
        if (cnt[i] >= 2){
            ans = max(ans,i);
        }
    }

    cout << ans << endl;

    return 0;
}
#include <stdio.h>

#include <algorithm>
#include <cmath>
#include <iostream>
#include <map>
#include <set>
#include <unordered_map>
#include <vector>

#define ALL(obj) (obj).begin()(obj).end()
#define DEBUG(x) cerr << #x << " = " << x << endl

using namespace std;

int main() {
  int n;
  std::cin >> n;
  std::string s;
  std::cin >> s;
  std::set<std::pair<int, int>> undecided;

  for (int i = 0; i < n; i++) {
    undecided.insert(std::make_pair(i, s[i]));
  }

  auto pointer = undecided.begin();
  int ans = 0;

  while (pointer != undecided.end()) {
    auto origin_ptr = pointer;
    if (pointer->second == 'f') {
      pointer++;
      if (pointer != undecided.end() && pointer->second == 'o') {
        pointer++;
        if (pointer != undecided.end() && pointer->second == 'x') {
          pointer = origin_ptr;
          for (int i = 0; i < 3; ++i) {
            pointer = undecided.erase(pointer);
          }
          ans += 1;
          if (pointer != undecided.begin()) {
            pointer = std::prev(pointer);
          }
          if (pointer != undecided.begin()) {
            pointer = std::prev(pointer);
          }

          continue;
        }
      }
    }

    pointer = origin_ptr;
    pointer++;
  }
  std::cout << n - ans * 3 << std::endl;
}
