#include <bits/stdc++.h>
using namespace std;
const int N = -1;
const int INF = 1.01e9;
const int ALF = 26;
int main() {
  string s;
  cin >> s;
  int n = s.size();
  vector<long long> pref;
  pref.push_back(0);
  assert(ALF == 'z' - 'a' + 1);
  for (auto x : s) {
    pref.push_back(pref.back() ^ (1ll << (x - 'a')));
    assert('a' <= x && x <= 'z');
  }
  vector<int> dp(n + 1, INF);
  dp[0] = 0;
  map<long long, int> last;
  for (int i = 0; i < (int)pref.size(); i++) {
    last[pref[i]] = i;
  }
  auto upd = [](int& A, int B) { A = min(A, B); };
  for (int i = 0; i < n; i++) {
    if (dp[i] < INF) {
      upd(dp[last[pref[i]]], dp[i] + 1);
      for (int j = 0; j < ALF; j++) {
        if (last.count(pref[i] ^ (1ll << (j))) == 1) {
          upd(dp[last[pref[i] ^ (1ll << (j))]], dp[i] + 1);
        }
      }
    }
  }
  cout << dp[n] << endl;
  return 0;
}
