#include <bits/stdc++.h>
using namespace std;
char s[1001000];
int n;
int num[1001000], l[1001000], r[1001000];
int sta[2][1001000], sz[2];
int cur = 0, las = 1, ans;
int main() {
  scanf("%s", s + 1);
  n = strlen(s + 1);
  for (int i = 1; i <= n; ++i) {
    num[i] = s[i] - 'a';
  }
  for (int i = 1; i <= n; ++i) {
    l[i] = i - 1;
    r[i] = i + 1;
    if (i > 1 && num[i] != num[i - 1])
      sta[cur][sz[cur]++] = i;
    else if (i < n && num[i] != num[i + 1])
      sta[cur][sz[cur]++] = i;
  }
  while (1) {
    cur ^= 1;
    las ^= 1;
    if (!sz[las]) break;
    ++ans;
    sz[cur] = 0;
    int lx = sta[las][0];
    for (int i = 1; i <= sz[las]; ++i) {
      int v = sta[las][i];
      int lv = sta[las][i - 1];
      if (i == sz[las] || r[lv] != v) {
        int llx = l[lx], rv = r[lv];
        r[llx] = rv;
        l[rv] = llx;
        if (llx > 0 && rv <= n) {
          if (num[llx] != num[rv]) {
            if (sz[cur] == 0 || sta[cur][sz[cur] - 1] != llx) {
              sta[cur][sz[cur]++] = llx;
            }
            sta[cur][sz[cur]++] = rv;
          }
        }
        lx = v;
      }
    }
  }
  printf("%d\n", ans);
  return 0;
}
