#include <bits/stdc++.h>
using namespace std;
const int maxn = 200 * 1000 + 10;
bool mark[maxn];
int ans, cur;
string s;
vector<int> vec;
int main() {
  cin >> s;
  for (int i = 1; i < (((int)s.size())); i++) {
    if (s[i] != s[i - 1]) {
      vec.push_back(i - cur);
      cur = i;
    }
  }
  vec.push_back((((int)s.size())) - cur);
  for (int i = 0; i < (((int)vec.size())); i++) {
    if (vec[i] == 2) {
      mark[i] = 1;
      if (i < (((int)vec.size())) - 1 && vec[i + 1] >= 2) {
        vec[i + 1]--;
        ans += 2;
        i++;
      } else if (i > 0 && vec[i - 1] >= 2) {
        vec[i - 1]--;
        ans += 2;
      } else
        ans++;
    }
  }
  for (int i = 0; i < (((int)vec.size())); i++) {
    if (!mark[i]) ans += vec[i] / 3 * 2 + (vec[i] % 3 + 2) / 3;
  }
  cout << ans;
  return 0;
}
