#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000000 + 10;
char str[MAXN], str1[MAXN];
int n, f[2][MAXN][2], a[MAXN], N;
int main() {
  scanf("%s", str);
  n = strlen(str);
  int p = 0;
  for (; str[0] == str[(n - 1 - p)]; ++p)
    ;
  for (int i = 0; i < n; ++i) str1[i] = str[(i - p + n) % n];
  memcpy(str, str1, sizeof(str));
  int cnt = 1;
  for (int i = 1; i < n; ++i) {
    if (str[i] == str[i - 1])
      ++cnt;
    else {
      a[++N] = cnt + 1;
      cnt = 1;
    }
  }
  a[++N] = cnt + 1;
  if (a[1] > 2)
    f[0][1][0] = 1, f[0][1][1] = 1, f[1][1][0] = 1, f[1][1][1] = 0;
  else
    f[0][1][0] = 0, f[1][1][0] = 1, f[0][1][1] = 1, f[1][1][1] = 0;
  for (int i = 2; i < N; ++i) {
    for (int j = 0; j <= 1; ++j)
      if (a[i] > 2)
        f[j][i][0] = max(f[j][i - 1][0] + 1, f[j][i - 1][1]),
        f[j][i][1] = f[j][i - 1][0] + 1;
      else
        f[j][i][0] = max(f[j][i - 1][1], f[j][i - 1][0]),
        f[j][i][1] = f[j][i - 1][0] + 1;
  }
  int Tohka = 0;
  if (a[N] > 2)
    Tohka = max(f[0][N - 1][0] + 1, Tohka), Tohka = max(f[0][N - 1][1], Tohka),
    Tohka = max(f[1][N - 1][0], Tohka);
  else
    Tohka = max(f[0][N - 1][0], Tohka), Tohka = max(f[0][N - 1][1], Tohka),
    Tohka = max(f[1][N - 1][0], Tohka);
  cout << Tohka << endl;
  fclose(stdin);
  fclose(stdout);
  return 0;
}
