#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
template <class T>
void chkmax(T &a, T b) {
  if (a < b) a = b;
}
template <class T>
void chkmin(T &a, T b) {
  if (a > b) a = b;
}
const int inf = 0x3f3f3f3f;
const long long linf = 2e18 + 100;
const double dinf = 2e18 + 100;
const double eps = 1e-7;
const double pi = 3.14159265358979323846264338327950288L;
bool scanld(double &first) {
  double xx;
  int f = scanf("%lf", &xx);
  first = xx;
  return f > 0;
}
void printld(const double &first) {
  printf("%.10lf", fabs(first) < eps ? 0 : (double)first);
}
inline char nc() {
  static char buf[100000], *p1 = buf, *p2 = buf;
  return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 100000, stdin), p1 == p2)
             ? EOF
             : *p1++;
}
template <class T>
void read(T &first) {
  char c = nc(), b = 1;
  for (; !(c >= '0' && c <= '9' || c == EOF); c = nc())
    if (c == '-') b = -b;
  for (first = 0; c >= '0' && c <= '9'; first = first * 10 + c - '0', c = nc())
    ;
  first *= b;
}
inline void read(char *s) {
  char c = nc();
  int len = 0;
  for (; c == ' ' || c == '\t' || c == '\n'; c = nc())
    ;
  for (; !(c == ' ' || c == '\t' || c == '\n' || c == EOF);
       s[len++] = c, c = nc())
    ;
  s[len] = 0;
}
int n;
char s[200005];
int main() {
  read(s);
  int ls = strlen(s);
  for (int i = 0; i < ls; i++) {
    s[ls + i] = s[i];
  }
  s[ls * 2] = 0;
  int r = -1, ans = 0;
  for (int i = 0; i < ls; i++) {
    chkmax(r, i + 1);
    while (r < ls + i) {
      if (s[r] != s[r - 1])
        r++;
      else
        break;
    }
    chkmax(ans, r - i);
  }
  printf("%d\n", ans);
  return 0;
}
