#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5100, ALF = 26;
int ans = 0, d;
string s;
vector<pair<int, char> > g;
vector<pair<int, char> > kek;
pair<int, char> tc;
int kol(int A) { return (A / 2 + A % 2); }
int mel() {
  int rez = s.size();
  for (int i = 0; i < g.size(); i++) {
    tc = g[i];
    if (i == 0 || i == g.size() - 1) {
      rez = min(rez, tc.first);
    } else {
      rez = min(rez, kol(tc.first));
    }
  }
  return rez;
}
void obra(int va) {
  kek.clear();
  for (int i = 0; i < g.size(); i++) {
    tc = g[i];
    if (i == 0 || i == g.size() - 1) {
      tc.first -= va;
    } else {
      tc.first -= va * 2;
    }
    if (tc.first > 0) {
      if (kek.size() > 0 && kek.back().second == tc.second) {
        kek.back().first += tc.first;
      } else {
        kek.push_back(tc);
      }
    }
  }
  swap(kek, g);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> s;
  g.push_back({1, s[0]});
  for (int i = 1; i < s.size(); i++) {
    if (s[i] == g.back().second) {
      g.back().first++;
    } else {
      g.push_back({1, s[i]});
    }
  }
  while (g.size() > 1) {
    d = mel();
    ans += d;
    obra(d);
  }
  cout << ans;
  return 0;
}
