#include <bits/stdc++.h>
using namespace std;
int main() {
  long long int i;
  string s;
  cin >> s;
  long long int x = s.length();
  long long int k1 = 0;
  long long int k2 = 0;
  if (x % 3 == 0) {
    k1 = x / 3;
    k1 = k1 * 2;
  }
  if (x % 3 == 1) {
    k1 = x / 3;
    k1 = k1 * 2;
    k1++;
  }
  if (x % 3 == 0 || x % 3 == 1) {
    i = 1;
    while (i <= x - 1) {
      if (s[i] == s[i + 1]) {
      } else {
        if (s[i] != s[i - 1] && s[i + 1] != s[i + 2]) {
          k1++;
        }
      }
      i = i + 3;
    }
  } else {
    k1 = x / 3;
    k1 = k1 * 2;
    k1++;
    i = 1;
    while (i <= x - 5) {
      if (s[i] == s[i + 1]) {
      } else {
        if (s[i] != s[i - 1] && s[i + 1] != s[i + 2]) {
          k1++;
        }
      }
      i = i + 3;
    }
    if (s[x - 2] != s[x - 1] && s[x - 4] != s[x - 5]) {
      if (s[x - 3] != s[x - 2] && s[x - 3] != s[x - 4]) {
        k1 = k1 + 2;
      } else {
        k1++;
      }
    } else if (s[x - 2] == s[x - 1] && s[x - 4] != s[x - 5]) {
      k1++;
    } else if (s[x - 2] != s[x - 1] && s[x - 4] == s[x - 5]) {
      k1++;
    } else {
    }
  }
  if (x % 3 == 0) {
    k2 = x / 3;
    k2 = k2 * 2;
  }
  if (x % 3 == 2) {
    k2 = x / 3;
    k2 = k2 * 2;
    k2++;
  }
  if (x % 3 == 0 || x % 3 == 2) {
    i = 0;
    while (i <= x - 1) {
      if (s[i] == s[i + 1]) {
      } else {
        if (s[i] != s[i - 1] && s[i + 1] != s[i + 2]) {
          k2++;
        }
      }
      i = i + 3;
    }
  } else {
    k2 = x / 3;
    k2 = k2 * 2;
    i = 0;
    while (i <= x - 5) {
      if (s[i] == s[i + 1]) {
      } else {
        if (s[i] != s[i - 1] && s[i + 1] != s[i + 2]) {
          k2++;
        }
      }
      i = i + 3;
    }
    if (s[x - 2] != s[x - 1] && s[x - 4] != s[x - 5]) {
      if (s[x - 3] != s[x - 2] && s[x - 3] != s[x - 4]) {
        k2 = k2 + 2;
      } else {
        k2++;
      }
    } else if (s[x - 2] == s[x - 1] && s[x - 4] != s[x - 5]) {
      k2++;
    } else if (s[x - 2] != s[x - 1] && s[x - 4] == s[x - 5]) {
      k2++;
    } else {
    }
  }
  long long int k3 = 0;
  long long int k4 = 0;
  reverse(s.begin(), s.end());
  if (x % 3 == 0) {
    k3 = x / 3;
    k3 = k3 * 2;
  }
  if (x % 3 == 1) {
    k3 = x / 3;
    k3 = k3 * 2;
    k3++;
  }
  if (x % 3 == 0 || x % 3 == 1) {
    i = 1;
    while (i <= x - 1) {
      if (s[i] == s[i + 1]) {
      } else {
        if (s[i] != s[i - 1] && s[i + 1] != s[i + 2]) {
          k3++;
        }
      }
      i = i + 3;
    }
  } else {
    k3 = x / 3;
    k3 = k3 * 2;
    k3++;
    i = 1;
    while (i <= x - 5) {
      if (s[i] == s[i + 1]) {
      } else {
        if (s[i] != s[i - 1] && s[i + 1] != s[i + 2]) {
          k3++;
        }
      }
      i = i + 3;
    }
    if (s[x - 2] != s[x - 1] && s[x - 4] != s[x - 5]) {
      if (s[x - 3] != s[x - 2] && s[x - 3] != s[x - 4]) {
        k3 = k3 + 2;
      } else {
        k3++;
      }
    } else if (s[x - 2] == s[x - 1] && s[x - 4] != s[x - 5]) {
      k3++;
    } else if (s[x - 2] != s[x - 1] && s[x - 4] == s[x - 5]) {
      k3++;
    } else {
    }
  }
  if (x % 3 == 0) {
    k4 = x / 3;
    k4 = k4 * 2;
  }
  if (x % 3 == 2) {
    k4 = x / 3;
    k4 = k4 * 2;
    k4++;
  }
  if (x % 3 == 0 || x % 3 == 2) {
    i = 0;
    while (i <= x - 1) {
      if (s[i] == s[i + 1]) {
      } else {
        if (s[i] != s[i - 1] && s[i + 1] != s[i + 2]) {
          k4++;
        }
      }
      i = i + 3;
    }
  } else {
    k4 = x / 3;
    k4 = k4 * 2;
    i = 0;
    while (i <= x - 5) {
      if (s[i] == s[i + 1]) {
      } else {
        if (s[i] != s[i - 1] && s[i + 1] != s[i + 2]) {
          k4++;
        }
      }
      i = i + 3;
    }
    if (s[x - 2] != s[x - 1] && s[x - 4] != s[x - 5]) {
      if (s[x - 3] != s[x - 2] && s[x - 3] != s[x - 4]) {
        k4 = k4 + 2;
      } else {
        k4++;
      }
    } else if (s[x - 2] == s[x - 1] && s[x - 4] != s[x - 5]) {
      k4++;
    } else if (s[x - 2] != s[x - 1] && s[x - 4] == s[x - 5]) {
      k4++;
    } else {
    }
  }
  cout << max(k4, max(k3, max(k1, k2)));
  return 0;
}
