#include <bits/stdc++.h>
using namespace std;
void setIO(string St) {
  string IN = St + ".in", OUT = St + ".out";
  freopen(IN.c_str(), "r", stdin);
  freopen(OUT.c_str(), "w", stdout);
}
const int oo = 10000000;
int N, m, F[1000008][2];
int A[1000008], B[1000008];
string S, S1;
void ReBuild() {
  int t = 0;
  for (int i = 1; i < N; i++)
    if (S[i] != S[i - 1]) {
      t = i;
      break;
    }
  for (int i = 0; i < N; i++) {
    S[i] = S1[t];
    t = (t + 1) % N;
  }
}
void Solve() {
  int s = 0, Ans = 1;
  m = 0;
  for (int i = 0; i < N; i++) {
    A[++m] = i;
    while (i < N - 1 && S[i] == S[i + 1]) i++;
    B[m] = i + 1;
  }
  int t = 1;
  for (int i = 1; i <= m; i++) F[i][0] = F[i][1] = -oo;
  F[1][0] = 1;
  for (int i = 2; i < m; i++)
    if (B[i] - A[i] == 1) {
      if (i != m - 1) F[i][1] = F[i - 1][0] + 1;
      F[i][0] = max(F[i - 1][0], F[i - 1][1]);
    } else {
      if (i != m - 1) F[i][1] = F[i - 1][0] + 1;
      F[i][0] = max(F[i - 1][0] + 1, F[i - 1][1]);
    }
  if (F[m - 1][0] > Ans) Ans = F[m - 1][0];
  if (F[m - 1][1] > Ans) Ans = F[m - 1][1];
  for (int i = 1; i <= m; i++) F[i][0] = F[i][1] = -oo;
  if (A[1] + 1 < B[1])
    F[1][0] = 1, F[1][1] = 1;
  else
    F[1][0] = 0, F[1][1] = 1;
  for (int i = 2; i < m; i++)
    if (B[i] - A[i] == 1) {
      F[i][1] = F[i - 1][0] + 1;
      F[i][0] = max(F[i - 1][0], F[i - 1][1]);
    } else {
      F[i][1] = F[i - 1][0] + 1;
      F[i][0] = max(F[i - 1][0] + 1, F[i - 1][1]);
    }
  if (B[m] - A[m] > 1) F[m - 1][0]++;
  if (F[m - 1][0] > Ans) Ans = F[m - 1][0];
  if (F[m - 1][1] > Ans) Ans = F[m - 1][1];
  cout << Ans << endl;
}
int main() {
  cin >> S1;
  S = S1;
  N = S1.size();
  ReBuild();
  Solve();
  return 0;
}
