Algorithm


B. Choosing Symbol Pairs
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

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
Copy
great10
output
Copy
7
input
Copy
aaaaaaaaaa
output
Copy
100



 

Code Examples

#1 Code Example with C++ Programming

Code - C++ Programming

#include <cstdio>
#include <iostream>
#include <vector>

int main(){
    
    const int N = 256;
    std::vector<long long> counts(N,0);

    std::string input; getline(std::cin, input);
    for(long k = 0; k < input.size(); k++){++counts[input[k]];}

    long long total(0);
    for(long k = 0; k < N; k++){total += counts[k] * counts[k];}

    printf("%lld\n", total);

    return 0;
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
great10

Output

x
+
cmd
7
Advertisements

Demonstration


Codeforces Solution-B. Choosing Symbol Pairs-Solution in C, C++, Java, Python

Previous
Codeforces solution 1080-B-B. Margarite and the best present codeforces solution
Next
CodeChef solution DETSCORE - Determine the Score CodeChef solution C,C+