#include <bits/stdc++.h>
using namespace std;
map<int, int> DP;
int PosDP[500000];
int& Get(int pos) {
  if (DP.count(pos)) return DP[pos];
  return DP[pos] = -1;
}
int main() {
  string s;
  cin >> s;
  int cur_mask = 0;
  DP[0] = 0;
  int n = s.size();
  for (int i = 0; i < n; ++i) {
    int norm = s[i] - 'a';
    cur_mask ^= (1 << norm);
    PosDP[i] = 1 + Get(cur_mask);
    for (int a = 0; a <= 26; ++a) {
      int nw_mask = cur_mask;
      nw_mask ^= (1 << norm);
      if (Get(nw_mask) != -1) {
        if (PosDP[i] == -1 or PosDP[i] > 1 + Get(nw_mask))
          PosDP[i] = 1 + Get(nw_mask);
      }
    }
    Get(cur_mask) = max(Get(cur_mask), PosDP[i]);
  }
  cout << PosDP[n - 1] << endl;
  return 0;
}
