#include <bits/stdc++.h>
using namespace std;
const int INF = 0x2aaaaaaa;
const long long INFLL = 0x1f1f1f1f1f1f1f1fLL;
template <class A, class B>
inline ostream& operator<<(ostream& st, const pair<A, B>& P) {
  return st << "(" << P.first << "," << P.second << ")";
};
template <class A, class B>
inline pair<A, B> operator+(const pair<A, B>& P, const pair<A, B>& Q) {
  return pair<A, B>(P.first + Q.first, P.second + Q.second);
};
template <class A, class B>
inline pair<A, B> operator-(const pair<A, B>& P, const pair<A, B>& Q) {
  return pair<A, B>(P.first - Q.first, P.second - Q.second);
};
int P[200005];
int m[1 << 26];
int main() {
  string s;
  cin >> s;
  int N = s.size();
  int p = 0;
  for (int i = 0; i < N; i++) {
    int t = s[i] - 'a';
    p ^= (1 << t);
    P[i + 1] = p;
  }
  for (int i = 0; i < 1 << 26; i++) m[i] = INF;
  m[0] = 0;
  for (int i = 1; i <= N; i++) {
    int mi = m[P[i]];
    for (int j = 0; j < 26; j++) {
      p = (P[i] ^ (1 << j));
      mi = min(mi, m[p]);
    }
    m[P[i]] = min(m[P[i]], mi + 1);
  }
  cout << m[P[N]] << endl;
  return 0;
}
