#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3fffffff;
const int SINF = 0x7fffffff;
const long long LINF = 0x3fffffffffffffff;
const long long SLINF = 0x7fffffffffffffff;
const int MAXN = 200007;
int n;
char s[MAXN];
int lt[MAXN];
int dp[MAXN];
map<int, int> la;
void init();
void input();
void work();
int main() {
  init();
  input();
  work();
}
void init() { ios::sync_with_stdio(false); }
void input() { scanf("%s", s + 1); }
void work() {
  n = strlen(s + 1);
  la[0] = 0;
  int ns = 0;
  for (int i = 1; i <= n; ++i) {
    ns ^= (1 << (s[i] - 'a'));
    lt[i] = n + 1;
    for (int j = 0; j <= 'z' - 'a'; ++j) {
      if (la.find(ns ^ (1 << j)) != la.end())
        lt[i] = min(lt[i], la[ns ^ (1 << j)]);
    }
    if (la.find(ns) == la.end())
      la[ns] = i;
    else
      lt[i] = min(lt[i], la[ns]);
  }
  memset(dp, 0x3f3f3f3f, sizeof(dp));
  dp[0] = 0;
  for (int i = 1; i <= n; ++i) {
    dp[i] = (((dp[i - 1]) < (dp[lt[i]])) ? (dp[i - 1]) : (dp[lt[i]])) + 1;
  }
  cout << dp[n] << endl;
}
