#include <bits/stdc++.h>
using namespace std;
string s;
int main() {
  cin >> s;
  string t = "";
  vector<string> ans;
  for (int i = 0; i < s.size(); i++) {
    t += s[i];
    if (i % 3 == 2) {
      if (ans.empty() && t[0] != t[1] && t[1] != t[2] ||
          !ans.empty() && ans[ans.size() - 1] == t.substr(0, 1) &&
              t[0] != t[1] && t[1] != t[2]) {
        ans.push_back(t.substr(0, 1));
        ans.push_back(t.substr(1, 1));
        ans.push_back(t.substr(2, 1));
      } else {
        if (ans.empty() || ans[ans.size() - 1] != t.substr(0, 1)) {
          ans.push_back(t.substr(0, 1));
          ans.push_back(t.substr(1));
        } else {
          ans.push_back(t.substr(0, 2));
          ans.push_back(t.substr(2));
        }
      }
      t = "";
    }
  }
  if (t == "")
    cout << ans.size();
  else {
    if (t.size() == 1) {
      ans.push_back(t);
      while (ans.size() >= 2 && ans[ans.size() - 1] == ans[ans.size() - 2]) {
        if (ans[ans.size() - 2].size() == 1 &&
            ans[ans.size() - 1].size() == 1) {
          string e = "";
          e += ans[ans.size() - 2][0];
          e += ans[ans.size() - 1][0];
          ans.erase(ans.end());
          ans[ans.size() - 1] = e;
        } else {
          if (ans.size() > 2 &&
              ans[ans.size() - 3].size() != ans[ans.size() - 2].size() + 1) {
            ans[ans.size() - 2] +=
                ans[ans.size() - 1][ans[ans.size() - 1].size() - 1];
            ans[ans.size() - 1].erase(ans[ans.size() - 1].end());
          } else {
            ans[ans.size() - 1] +=
                ans[ans.size() - 2][ans[ans.size() - 2].size() - 1];
            ans[ans.size() - 2].erase(ans[ans.size() - 2].end());
          }
        }
      }
    } else {
      if (!ans.empty() && ans[ans.size() - 1] == t.substr(0, 1) || t[0] == t[1])
        ans.push_back(t);
      else {
        ans.push_back(t.substr(0, 1));
        ans.push_back(t.substr(1));
      }
    }
    cout << ans.size();
  }
  return 0;
}
