#include <bits/stdc++.h>
bool checkListCanKaibun(int list[]) {
  int oddCount = 0;
  for (int i = 'a'; i <= 'z'; i++) {
    if (list[i] & 1) {
      oddCount++;
      if (oddCount > 1) return false;
    }
  }
  return true;
}
int getMaxSegLen(std::string &s, int start, int end) {
  int list[0x100];
  int maxSegLen = 0;
  for (int i = 'a'; i <= 'z'; i++) {
    list[i] = 0;
  }
  for (int i = start; i <= end; i++) {
    list[s[i]]++;
    if (checkListCanKaibun(list)) {
      maxSegLen = i - start + 1;
    }
  }
  return maxSegLen;
}
int getMaxSegLenBack(std::string &s, int start, int end) {
  int list[0x100];
  int maxSegLen = 0;
  for (int i = 'a'; i <= 'z'; i++) {
    list[i] = 0;
  }
  for (int i = end; i >= start; i--) {
    list[s[i]]++;
    if (checkListCanKaibun(list)) {
      maxSegLen = end - i + 1;
    }
  }
  return maxSegLen;
}
int main(int argc, char *argv[]) {
  std::string s;
  std::cin >> s;
  int start = 0, end = s.length() - 1;
  int count = 0;
  while (start <= end) {
    int pLen = getMaxSegLen(s, start, end);
    int bLen = getMaxSegLenBack(s, start, end);
    if (pLen >= bLen) {
      start = start + pLen;
      count++;
    } else {
      end = end - bLen;
      count++;
    }
  }
  std::cout << count << std::endl;
  return 0;
}
