import java.util.Scanner;
//23届秋招阿里笔试第一题:二进制求解(100%)
public class Main1 {
public static void f1(int n) {
String str= Integer.toString(n, 2);
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i)=='1') {
System.out.print((char)('a'+str.length()-1-i));
}
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
f1(sc.nextInt());
}
}
import java.util.Scanner;
//23届秋招阿里笔试第二题:树技巧求解(0%)
public class Main2 {
public static void f2(int[] arr,int[][] help) {
int sum=0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < help.length; j++) {
if(help[1][j]==i+1) {
sum+=(i+1-help[0][j]);
}
}
}
System.out.println(sum);
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] arr=new int[n];
int[][] help=new int[2][n-1];
for (int i = 0; i < n-1; i++) {
help[0][i]=sc.nextInt();
help[1][i]=sc.nextInt();
}
f2(arr, help);
}
}
import java.util.Scanner;
//23届秋招阿里笔试第三题:动规求解(20%)
public class Main3 {
public static void f3(String str) {
Long[] arr=new Long[str.length()];
arr[0]=1L;
for (int i = 1; i < arr.length; i++) {
arr[i]=1+arr[i-1];
for (int j = i-1; j >=0; j--) {
if(check(str.substring(j, i+1))) {
arr[i]++;
}
}
}
System.out.println(arr[str.length()-1]);
}
public static boolean check(String str) {
int[] help=new int[26];
for (int i = 0; i < str.length(); i++) {
help[str.charAt(i)-'a']++;
}
boolean flag=false;
for (int i = 0; i < help.length; i++) {
if(help[i]%2!=0) {
if(flag) {
return false;
}
flag=true;
}
}
return flag;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
f3(sc.next());
}
}