#include <bits/stdc++.h>
using namespace std;
long long INFl = 1e+18 + 1;
int INF = 1e+9 + 1;
long long guukiruiseki[200001] = {};
bool kaibun(int left, int right) {
  long long info = guukiruiseki[left] ^ guukiruiseki[right];
  if (info - (info & -info) == 0)
    return true;
  else
    return false;
}
int main() {
  string S;
  cin >> S;
  int maxN = S.size();
  for (int i = 1; i <= maxN; i++) {
    guukiruiseki[i] = guukiruiseki[i - 1] ^ (1 << (S[i - 1] - 'a'));
  }
  int left = 0, right = maxN;
  int ans = 1;
  while (1) {
    if (kaibun(left, right)) break;
    int kukanmax = 0, maxi = -1, acdir = -1;
    int twoflag = 0;
    for (int i = left + 1; i < right; i++) {
      if (kaibun(left, i) && kaibun(i, right)) {
        ans += 1;
        twoflag = 1;
        break;
      } else if (kaibun(left, i)) {
        if (kukanmax < i - left) {
          kukanmax = i - left;
          maxi = i;
          acdir = 0;
        }
      } else if (kaibun(i, right)) {
        if (kukanmax < right - i) {
          kukanmax = right - i;
          maxi = i;
          acdir = 1;
        }
      }
    }
    if (twoflag) break;
    ans++;
    if (acdir) {
      right = maxi;
    } else {
      left = maxi;
    }
  }
  cout << ans << endl;
  return 0;
}
