#include <bits/stdc++.h>
using namespace std;
string S;
int N;
int main() {
  ios::sync_with_stdio(0);
  cin >> S;
  N = S.size();
  set<int> curst, nxtst, rem;
  for (int i = 0; i < N; i++) {
    if (i != 0 && S[i - 1] != S[i])
      curst.insert(i);
    else if (i != N - 1 && S[i + 1] != S[i])
      curst.insert(i);
    rem.insert(i);
  }
  int ans = 0;
  while (!curst.empty()) {
    ans++;
    for (set<int>::iterator it = curst.begin(); it != curst.end();) {
      int idx = *it;
      rem.erase(idx);
      set<int>::iterator nxt = rem.upper_bound(idx);
      it++;
      if (nxt == rem.end()) continue;
      if (it == curst.end() || *nxt < *it) {
        set<int>::iterator prv = nxt;
        if (prv != rem.begin()) {
          prv--;
          if (S[*prv] != S[*nxt]) {
            nxtst.insert(*prv);
            nxtst.insert(*nxt);
          }
        }
      }
    }
    swap(curst, nxtst);
    nxtst.clear();
  }
  cout << ans << "\n";
  return 0;
}
