## Given a string, write a function that will print the number of pairs whose elements are at same distance as in english alphabets

### Example

**INPUT**

s = “agckj”

**OUTPUT**

3

The pairs are (a,c), (g,j) and (j,k)

### Method 1

**Tiime Complexity : O()**

## Algorithm

**1.** Generate all pairs

**2.** If in any pair characters are at same distance, then increament the count

Method 2 (Optimized)

Uses the fact that there can be only 26 alphabets

## C++ Program

```
//optimized method
#include<bits/stdc++.h>
#define NO_OF_CHARS 26
using namespace std;
//Function to count pairs
int noOfPairs(string s)
{
int count = 0;
int n = s.length();
for (int i=0; i<n ; i++)
{
// This loop runs at most 26 times
for (int j=1; (i+j)<n && j<=NO_OF_CHARS; j++)
{
if ((abs(s[i+j] - s[i]) == j))
{
count++;
}
}
}
return count;
}
int main()
{
string s = "agckj" ;
cout << noOfPairs(s)<<endl;
return 0;
}
```

**Time Complexity : O(n)**

## Algorithm

**1.** Instead of checking an element upto length of the string, check from current index to 26th index

## C++ Program

```
//Brute Force Algo Code
#include<bits/stdc++.h>
using namespace std;
// Function to count pairs
int noOfPairs(string s)
{
int count = 0;
int n = s.length();
for (int i = 0 ; i < n ; i++)
{
for (int j = i+1; j < n ; j++)
{
// If characters are at same distance, increament count
if (abs(s[i] - s [j]) == abs(i-j))
{
count++;
}
}
}
return count;
}
int main()
{
string s = "agckj" ;
cout << noOfPairs(s)<<endl;
return 0;
}
```