#include <bits/stdc++.h>
using namespace std;
string S;
int solve() {
  map<int, vector<int> > pat;
  map<int, int> revpat;
  int p = 0;
  for (int i = (0); i < (int)(((int)S.size())); ++i) {
    p = (p ^ (1 << ((int)S[i] - 'a')));
    pat[p].push_back(i);
    revpat[i] = p;
  }
  int ans = 0, index = 0;
  p = 0;
  while (index < ((int)S.size())) {
    int next_index = index;
    for (int i = (0); i < (int)(27); ++i) {
      int pp = p;
      if (i != 26) pp ^= (1 << i);
      if (((int)pat[pp].size()) != 0)
        next_index = max(next_index, pat[pp][((int)pat[pp].size()) - 1] + 1);
    }
    index = next_index;
    p = revpat[next_index - 1];
    ans++;
  }
  return ans;
}
int main() {
  cin >> S;
  int ans = solve();
  reverse((S).begin(), (S).end());
  ans = min(ans, solve());
  cout << ans << endl;
  return 0;
}
