#include <bits/stdc++.h>
using namespace std;
long long getLen(long long n);
int main() {
  string str;
  cin >> str;
  vector<int> vi;
  int cnt = 1;
  auto itr = str.begin();
  char last = *itr;
  ++itr;
  for (; itr != str.cend(); ++itr) {
    if (*itr != last) {
      last = *itr;
      vi.push_back(cnt);
      cnt = 1;
    } else {
      cnt++;
    }
  }
  int len2 = 0;
  long long ans = 0;
  for (auto itr2 = vi.begin(); itr2 != vi.cend(); ++itr2) {
    if (*itr2 % 3 == 2) {
      len2++;
      ans += getLen(*itr2);
    } else if (len2 % 2 == 1 && *itr2 % 3 == 0) {
      ans += getLen(*itr2);
      ++itr2;
      if (*itr2 % 3 == 2) {
        ans += 1;
      }
      ans += getLen(*itr2);
      ans += len2 / 2;
      len2 = 0;
    } else {
      ans += len2 / 2;
      len2 = 0;
      ans += getLen(*itr2);
    }
  }
  cout << ans << endl;
}
long long getLen(long long n) { return (n / 3) * 2 + (n % 3 == 0 ? 0 : 1); }
