#include <bits/stdc++.h>
using namespace std;
string S;
map<int, vector<int> > mp;
int search(int bit, int pos) {
  int next;
  int ret = 100000000;
  if (pos >= S.size()) return 0;
  for (int i = 0; i < 26; i++) {
    next = bit ^ (1 << i);
    if (mp.find(next) != mp.end()) {
      for (int j = 0; j < mp[next].size(); j++) {
        if (mp[next][j] < pos) continue;
        ret = min(ret, 1 + search(next, mp[next][j] + 1));
      }
    }
  }
  return ret;
}
int main(void) {
  cin >> S;
  int bit = 0;
  int cnt[26] = {0};
  for (int i = 0; i < S.size(); i++) {
    bit ^= (1 << (S[i] - 'a'));
    mp[bit].push_back(i);
    cnt[S[i] - 'a']++;
  }
  bool check = false;
  for (int i = 0; i < 26; i++) {
    if (cnt[i] % 2) {
      check = true;
      break;
    }
  }
  if (!check) {
    cout << 1 << endl;
    return 0;
  }
  cout << search(0, 0) << endl;
  return 0;
}
