ICPC Balloons (Codeforces 1703B)
Tags: Implement, data structures

In an ICPC contest, balloons are distributed as follows:   Whenever a team solves a problem, that team gets a balloon.  The first team to solve a problem gets an additional balloon.  A contest has 26 problems, labelled $$$\textsf{A}$$$, $$$\textsf{B}$$$, $$$\textsf{C}$$$, ..., $$$\textsf{Z}$$$. You are given the order of solved problems in the contest, denoted as a string $$$s$$$, where the $$$i$$$-th character indicates that the problem $$$s_i$$$ has been solved by some team. No team will solve the same problem twice.Determine the total number of balloons that the teams received. Note that some problems may be solved by none of the teams.

Input: The first line of the input contains an integer $$$t$$$ ($$$1 \leq t \leq 100$$$) — the number of testcases.The first line of each test case contains an integer $$$n$$$ ($$$1 \leq n \leq 50$$$) — the length of the string.The second line of each test case contains a string $$$s$$$ of length $$$n$$$ consisting of uppercase English letters, denoting the order of solved problems.

Output: For each test case, output a single integer — the total number of balloons that the teams received.

Note: In the first test case, $$$5$$$ balloons are given out:   Problem $$$\textsf{A}$$$ is solved. That team receives $$$2$$$ balloons: one because they solved the problem, an an additional one because they are the first team to solve problem $$$\textsf{A}$$$.  Problem $$$\textsf{B}$$$ is solved. That team receives $$$2$$$ balloons: one because they solved the problem, an an additional one because they are the first team to solve problem $$$\textsf{B}$$$.  Problem $$$\textsf{A}$$$ is solved. That team receives only $$$1$$$ balloon, because they solved the problem. Note that they don't get an additional balloon because they are not the first team to solve problem $$$\textsf{A}$$$.  The total number of balloons given out is $$$2+2+1=5$$$.In the second test case, there is only one problem solved. The team who solved it receives $$$2$$$ balloons: one because they solved the problem, an an additional one because they are the first team to solve problem $$$\textsf{A}$$$.

Sample Inputs:
6
3
ABA
1
A
3
ORZ
5
BAAAA
4
BKPT
10
CODEFORCES

Sample Outputs:
5
2
6
7
8
17

Solution (Python):
MAX = 200007
MOD = 1000000007
t = int(input())
for i in range(1, t + 1):
    n = int(input())
    s = input()
    vis = [False] * 26
    res = 0
    for c in s:
        if not vis[ord(c) - ord('A')]:
            res += 2
            vis[ord(c) - ord('A')] = True
        else:
            res += 1
    print(res)

Solution (Python):
x = int(input())
for i in range(x):
    s = 0
    y = int(input())
    z = input()
    if len(set(z)) == len(z):
        for e in range(y):
            s += 2
    else:
        u = set(z)
        for e in range(len(u)):
            s += 2
        r = list(z)
        for t in z:
            r.remove(t)
            if len(r) == len(z) - len(u):
                break
        for v in range(len(r)):
            s += 1
    print(s)

Solution (Python):
t = int(input())
for i in range(t):
    n = int(input())
    s = input()
    sets = set(s)
    print(2 * len(sets) + (n - len(sets)))