

Ninja has been given a string 'STR' containing only lowercase alphabetic characters. Ninja has to find the number of all the different possible substrings of size two that appear in 'STR' as contiguous substrings.
For example:
If the string is “abcd”, then all possible substrings of size two are { “ab”, “bc”, “cd”}.
The first line contains a single integer ‘T’ representing the number of test cases.
The next ‘T’ lines contain a string 'STR' which denotes the input string.
Output Format:
For each test case, return all different substrings of size two that appear in 'STR' as contiguous substrings.
Output for every test case will be printed in a separate line.
Note:
You don’t need to print anything; It has already been taken care of.
1 <= T <= 5*10^3
2 <= |STR| <= 10^3
Time limit: 1 sec
2
abc
dede
2
2
In the first test case, all the different possible substrings of size two are “ab” and “bc”.
In the second test case, all the different possible substrings of size two are “de” and “ed”.
2
coding
ninjas
5
5
In the first test case, all possible different substrings of size two are “co”, “od”, “di”, ‘in”, and “ng”.
In the second test case, all possible different substrings of size two are “ni”, “in”, “nj”, “ja”, and “as”.
Can you solve it by finding all substring of size 2?
The basic idea is to iterate through the ‘STR’ and store all the substrings of size 2 in a HashSet and finally return the size of this HashSet.
The steps are as follows:
O(N), where ‘N’ is the length of the ’STR’.
Since we are just iterating through the ’STR’ once and so, the overall time complexity is O(N).
O(N), where ‘N’ is the length of the ’STR’.
As we are storing all the substrings in a set ’DIFFERENT_SUB_STRINGS’. In the worst case, we have ‘N’ - 1 different substring. Hence, the overall space complexity is O(N).