Problem: There is a given string S consisting of N symbols. Your task is to find the number of ordered pairs of integers i and j such that

1. 1 ≤ i, j ≤ N

2. S[i] = S[j], that is the i-th symbol of string S is equal to the j-th.

Input

The single input line contains S, consisting of lowercase Latin letters and digits. It is guaranteed that string S in not empty and its length does not exceed 105.

Output

Print a single number which represents the number of pairs i and j with the needed property. Pairs (x, y) and (y, x) should be considered different, i.e. the ordered pairs count.

Examples

Input

great10


Output

7


Input

aaaaaaaaaa


Output

100

Solution (in JAVA):

Solution:




import java.io.*;

import java.util.HashMap;
import java.util.StringTokenizer;


/**
 * Created by L i o n on 9/6/2016.
 */
public class Main {
    //Template
    //UVa 11094
    public static PrintWriter out;

    //-----------MyScanner class for faster input----------
     static class MyScanner {
        BufferedReader br;
        StringTokenizer st;

        public MyScanner() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine(){
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }

    }


        public static void main(String[] args) {
            out = new PrintWriter(new BufferedOutputStream(System.out));
            task solver = new task();
            solver.solve();
            out.close();


        }

    static class task {


        //int m,s;

        public void solve() {
            MyScanner in=new MyScanner();
            //StringTokenizer idata=new StringTokenizer(in.nextLine());

            //out.println((Integer.parseInt(idata.nextToken())*Integer.parseInt(idata.nextToken())/2));
            char[] data=in.nextLine().toCharArray();
            HashMap<Character,Integer> freq=new HashMap<>();
            for(int i=0;i<data.length;i++){
                char x=data[i];
                if(freq.containsKey(x)) freq.put(x,freq.get(x)+1);
                else freq.put(x,1);
            }
            long ans=0;
            for(Character x : freq.keySet()){
                long t=(long)freq.get(x);
                ans=ans+(t*t);
            }
            System.out.println(ans);
            }

            //System.out.println(max);


        }


    }