#include <bits/stdc++.h>
using namespace std;
template <typename A, typename B>
inline bool chmax(A &a, B b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <typename A, typename B>
inline bool chmin(A &a, B b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
const long long INF = 1e9 + 100;
const long long MOD = 1000000007;
const double EPS = 1e-10;
const bool debug = 0;
string s;
int dp[212345];
int main() {
  cin >> s;
  int N = s.size();
  for (int i = (0); i < (N); i++) s[i] -= 'a';
  map<int, int> m;
  fill(dp, dp + N + 1, INF);
  int x = 0;
  dp[0] = 0;
  m[0] = 0;
  for (int i = (0); i < (N); i++) {
    x ^= 1 << s[i];
    int res = INF;
    if (m.find(x) != m.end()) chmin(res, m[x] + 1);
    for (int j = (0); j < (26); j++)
      if (m.find(x ^ 1 << j) != m.end()) chmin(res, m[x ^ 1 << j] + 1);
    if (m.find(x) == m.end() || m[x] > dp[i + 1]) m[x] = res;
    dp[i + 1] = res;
  }
  cout << dp[N] << endl;
  return 0;
}
