#include <bits/stdc++.h>
int main() {
  std::string str;
  std::cin >> str;
  long long ans = 0;
  long long n = str.size();
  char a;
  long long num, i = 0;
  int mode = 1;
  bool flag3n = false;
  bool flag2 = false;
  bool flag3 = false;
  bool flag2last = false;
  while (i < n) {
    a = str[i];
    num = 1;
    while (i <= n - 1) {
      i += 1;
      if (i >= n) {
        break;
      }
      if (a == str[i]) {
        num += 1;
      } else {
        break;
      }
    }
    if (num % 3 == 0) {
      ans += (num / 3) * 2;
    } else {
      ans += (num / 3) * 2 + 1;
    }
    if (num == 2 || num == 3) {
      if (mode == 0) {
        flag2 = true;
        flag3 = false;
        flag2last = false;
      } else if (mode == 2) {
        flag2 = true;
        flag3 = false;
        flag2last = true;
      } else if (mode == 4) {
        if (flag2) {
          ans += 1;
          flag2 = false;
          if (num == 3) {
            flag3 = true;
          } else {
            flag3 = false;
          }
        } else {
          flag2 = true;
          flag3 = false;
        }
        flag2last = false;
      } else {
        flag2 = false;
        flag3 = false;
        flag2last = false;
      }
      mode = 4;
      flag3n = false;
    } else if (num % 3 == 0) {
      if (mode == 0 && !flag3n) {
        ans += 1;
        flag3n = true;
      } else if (mode == 2) {
        ans += 1;
        flag3n = true;
      } else if (mode == 4 && flag2) {
        ans += 1;
        flag3n = true;
      } else {
        flag3n = false;
      }
      mode = 0;
      flag3 = false;
      flag2last = false;
    } else if (num % 3 == 1) {
      mode = 1;
      flag3n = false;
      flag3 = false;
      flag2last = false;
    } else {
      if (mode == 0 && !flag3n) {
        ans += 1;
      } else if (mode == 2) {
        ans += 1;
      } else if (mode == 4 && flag2) {
        ans += 1;
      }
      flag3n = false;
      flag3 = false;
      flag2last = false;
      mode = 2;
    }
  }
  if (flag3) {
    ans += -1;
  }
  if (flag2last) {
    ans += 1;
  }
  std::cout << ans << std::endl;
  return 0;
}
