#include <bits/stdc++.h>
using namespace std;
class DYetAnotherPalindromePartitioning {
 public:
  void solve(std::istream& cin, std::ostream& cout) {
    string s;
    cin >> s;
    long long n = s.size();
    vector<long long> dp(1LL << 26), ans(n);
    for (long long i = 0, i_len = (1LL << 26); i < i_len; ++i)
      dp[i] = 1001001001001001001ll;
    dp[0] = 0;
    long long x = 0;
    for (long long i = 0, i_len = (n); i < i_len; ++i) {
      long long c = s[i] - 'a';
      x ^= 1LL << c;
      long long val = 1001001001001001001ll;
      val = min(val, dp[x]);
      for (long long j = 0, j_len = (26); j < j_len; ++j) {
        long long nx = x ^ (1LL << j);
        val = min(val, dp[nx]);
      }
      dp[x] = min(dp[x], val + 1);
      ans[i] = val + 1;
    }
    cout << ans[n - 1] << endl;
  }
};
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  std::istream& in(std::cin);
  std::ostream& out(std::cout);
  DYetAnotherPalindromePartitioning solver;
  solver.solve(in, out);
  return 0;
}
