#include <bits/stdc++.h>
using namespace std;
vector<int> p(100005, 1), prime;
void sieve() {
  p[0] = p[1] = 0;
  for (int i = 2; i * i <= 100005; i++) {
    if (p[i]) {
      for (int j = i * i; j < 100005; j += i) {
        p[j] = 0;
      }
    }
  }
  for (int i = 2; i < 100005; i++)
    if (p[i]) prime.push_back(i);
}
vector<int> g[100005][2];
vector<int> func(int x) {
  vector<int> a;
  for (int i = 2; i * i <= x; i++) {
    if (x % i == 0) {
      int j = x / i;
      if (i != j) a.push_back(j);
      a.push_back(i);
    }
  }
  a.push_back(x);
  return a;
}
int main() {
  string second;
  cin >> second;
  if (second.size() == 1) {
    cout << 1 << endl;
    return 0;
  }
  int mx = 1;
  int a = 1;
  for (int i = 1; i < second.size(); i++) {
    if (second[i] != second[i - 1]) {
      a++;
      mx = max(mx, a);
    } else
      a = 1;
  }
  int left = 1, right = 1;
  for (int i = 0; i < second.size(); i++) {
    if (second[i] != second[i + 1])
      left++;
    else
      break;
  }
  for (int i = second.size() - 1; i >= 0; i--) {
    if (second[i] != second[i - 1])
      right++;
    else
      break;
  }
  if (second[0] == second[second.size() - 1]) {
    cout << mx;
    return 0;
  } else {
    cout << max(mx, min((int)second.size(), left + right));
    return 0;
  }
  return 0;
}
