Dictionary (Codeforces 1674B)
Tags: Math, combinatorics

The Berland language consists of words having exactly two letters. Moreover, the first letter of a word is different from the second letter. Any combination of two different Berland letters (which, by the way, are the same as the lowercase letters of Latin alphabet) is a correct word in Berland language.The Berland dictionary contains all words of this language. The words are listed in a way they are usually ordered in dictionaries. Formally, word $$$a$$$ comes earlier than word $$$b$$$ in the dictionary if one of the following conditions hold:  the first letter of $$$a$$$ is less than the first letter of $$$b$$$;  the first letters of $$$a$$$ and $$$b$$$ are the same, and the second letter of $$$a$$$ is less than the second letter of $$$b$$$. So, the dictionary looks like that:  Word $$$1$$$: ab  Word $$$2$$$: ac  ...  Word $$$25$$$: az  Word $$$26$$$: ba  Word $$$27$$$: bc  ...  Word $$$649$$$: zx  Word $$$650$$$: zy You are given a word $$$s$$$ from the Berland language. Your task is to find its index in the dictionary.

Input: The first line contains one integer $$$t$$$ ($$$1 \le t \le 650$$$) — the number of test cases.Each test case consists of one line containing $$$s$$$ — a string consisting of exactly two different lowercase Latin letters (i. e. a correct word of the Berland language).

Output: For each test case, print one integer — the index of the word $$$s$$$ in the dictionary.


Sample Inputs:
7
ab
ac
az
ba
bc
zx
zy

Sample Outputs:
1
2
25
26
27
649
650

Solution (Python):
def test(t):
    a = ''
    for _ in range(t):
        s = input()
        temp1 = (ord(s[0]) - 97) * 25
        temp2 = ord(s[1]) - 96 - int(s[0] <= s[1])
        a += str(temp1 + temp2) + '\n'
    print(a)
t = int(input())
test(t)

Solution (Python):
for (x, y, _) in [*open(0)][1:]:
    print(25 * ord(x) + ord(y) - (y > x) - 2521)

Solution (Python):
from itertools import product
z = []
for i in product('abcdefghijklmnopqrstuvwxyz', repeat=2):
    if i[0] != i[1]:
        z.append(i[0] + i[1])
n = int(input())
for i in range(n):
    print(z.index(input()) + 1)