#include <bits/stdc++.h>
using namespace std;
string s;
vector<vector<int>> v(26), v2(26);
bool isEven(int l, int r, int a) {
  if ((v2[a][r] - v2[a][l - 1]) % 2 == 0) {
    return true;
  }
  return false;
}
bool check(int l, int r, int a) {
  for (int i = 0; i < 26; i++) {
    if (i == a) continue;
    if (!isEven(l, r, i)) return false;
  }
  if (a == 26) return true;
  if (isEven(l, r, a)) return false;
  return true;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cin >> s;
  int N = s.size();
  s = " " + s;
  for (int i = 0; i < 26; i++) {
    v[i].resize(N + 1, 0);
    v2[i].resize(N + 1, 0);
  }
  for (int i = 1; i <= N; i++) {
    int j = s[i] - 'a';
    v[j][i]++;
  }
  for (int i = 0; i < 26; i++) {
    for (int j = 1; j <= N; j++) {
      v2[i][j] = v2[i][j - 1] + v[i][j];
    }
  }
  vector<int> opt(27, 0);
  int n;
  for (n = 0; n < N; n++) {
    vector<int> opt2 = opt;
    for (int i = 0; i <= 26; i++) {
      int pos = opt[i] + 1;
      for (int j = 0; j <= 26; j++) {
        for (int k = pos; k <= N; k++) {
          if (check(pos, k, j)) {
            opt2[j] = max(opt2[j], k);
          }
        }
      }
    }
    bool flag = false;
    for (int i = 0; i < 27; i++)
      if (opt2[i] == N) {
        flag = true;
        break;
      }
    if (flag) {
      break;
    }
    opt = opt2;
  }
  cout << n + 1 << endl;
  return 0;
}
