# The Love-Letter Mystery

### Problem Statement :

```James found a love letter that his friend Harry has written to his girlfriend. James is a prankster, so he decides to meddle with the letter. He changes all the words in the letter into palindromes.

To do this, he follows two rules:

1. He can only reduce the value of a letter by 1, i.e. he can change d to c, but he cannot change c to d or d to b.
2. The letter  a may not be reduced any further.

Each reduction in the value of any letter is counted as a single operation. Find the minimum number of operations required to convert a given string into a palindrome.

Function Description

Complete the theLoveLetterMystery function in the editor below.

theLoveLetterMystery has the following parameter(s):

string s: the text of the letter

Returns

int: the minimum number of operations

Input Format

The first line contains an integer q, the number of queries.
The next q  lines will each contain a string s.

Constraints

1  <=  q  <=  10

1  <=   | s |   <=  10^4
All strings are composed of lower case English letters, ascii[a-z], with no spaces.```

### Solution :

```                            ```Solution in C :

In   C++  :

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main(){
int t;
cin >> t;
while(t--){
string s;
cin >> s;
int i = 0;
int j = s.length()-1;
int sol = 0;
while(i<j){
sol += abs(s[i]-s[j]);
++i;
--j;
}
cout<<sol<<"\n";
}
return 0;
}

In  Java  :

import java.util.Scanner;

public class Solution {

public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();scan.nextLine();

for(int i=0;i<T;i++)
{
String s = scan.nextLine();
int count=0;
for(int j=0;j<s.length()/2;j++)
count+=Math.abs(s.charAt(j)-s.charAt(s.length()-1-j));
System.out.println(count);
}
}
}

In   C :

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int T,n,ans,i;
char s;

int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%s",&s);
n=strlen(s);
for(ans=i=0;i<n-1-i;i++)
ans+=abs(s[i]-s[n-1-i]);
printf("%d\n",ans);
}
return 0;
}

In   Python3  :

def case(t):
alphabet = "abcdefghijklmnopqrstuvwxyz"
rev = t[::-1]
ans = 0
for i in range(len(t) // 2):
op1 = t[i]
op2 = rev[i]
pos1 = alphabet.find(op1)
pos2 = alphabet.find(op2)
ans += abs(pos1 - pos2)
return ans

t = int(input())
for i in range(t):
s = input()
print(case(s))```
```

## Array Pairs

Consider an array of n integers, A = [ a1, a2, . . . . an] . Find and print the total number of (i , j) pairs such that ai * aj <= max(ai, ai+1, . . . aj) where i < j. Input Format The first line contains an integer, n , denoting the number of elements in the array. The second line consists of n space-separated integers describing the respective values of a1, a2 , . . . an .

## Self Balancing Tree

An AVL tree (Georgy Adelson-Velsky and Landis' tree, named after the inventors) is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing is done to restore this property. We define balance factor for each node as : balanceFactor = height(left subtree) - height(righ

## Array and simple queries

Given two numbers N and M. N indicates the number of elements in the array A[](1-indexed) and M indicates number of queries. You need to perform two types of queries on the array A[] . You are given queries. Queries can be of two types, type 1 and type 2. Type 1 queries are represented as 1 i j : Modify the given array by removing elements from i to j and adding them to the front. Ty