Caesar's Cipher
Tag(s):

## Data Structures, Easy, HashMap, Map, approved

Problem
Editorial
Analytics

Caesar's Cipher is a very famous encryption technique used in cryptography. It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions down the alphabet. For example, with a shift of $3$, $D$ would be replaced by $G$, $E$ would become $H$, $X$ would become $A$ and so on.

Encryption of a letter $X$ by a shift $K$ can be described mathematically as $E_{K} ( X ) = ( X + K )$ % $26$.

Given a plaintext and it's corresponding ciphertext, output the minimum non-negative value of shift that was used to encrypt the plaintext or else output $-1$ if it is not possible to obtain the given ciphertext from the given plaintext using Caesar's Cipher technique.

Input:

The first line of the input contains $Q$, denoting the number of queries.

The next $Q$ lines contain two strings $S$ and $T$ consisting of only upper-case letters.

Output:

For each test-case, output a single non-negative integer denoting the minimum value of shift that was used to encrypt the plaintext or else print $-1$ if the answer doesn't exist.

Constraints:

• $1 \le Q \le 5$
• $1 \le |S| \le 10^{5}$
• $1 \le |T| \le 10^{5}$
• $|S| = |T|$
SAMPLE INPUT
2
ABC
DEF
AAA
PQR

SAMPLE OUTPUT
3
-1

Explanation

In the first test case, A is replaced by D, B by E and C by F. It is easy to make out that a shift of $3$ has been used for encrypting the plain text.

In the second test case, the value of the shift is not consistent for all letters of the plain text. Thus, we can safely come to the conclusion that the plain text has not been encrypted using Caesar's Cipher. Hence, the answer is no.

Time Limit: 1.0 sec(s) for each input file.
Memory Limit: 256 MB
Source Limit: 1024 KB
Marking Scheme: Marks are awarded when all the testcases pass.
Allowed Languages: C, C++, C++14, Clojure, C#, D, Erlang, F#, Go, Groovy, Haskell, Java, Java 8, JavaScript(Rhino), JavaScript(Node.js), Julia, Kotlin, Lisp, Lisp (SBCL), Lua, Objective-C, OCaml, Octave, Pascal, Perl, PHP, Python, Python 3, R(RScript), Racket, Ruby, Rust, Scala, Swift, Visual Basic

## CODE EDITOR

Initializing Code Editor...