

All the elements in the ‘SMALL’ array are distinct.
Let us say 'SMALL' = [ 3,6 ] and 'LARGE' = [ 8, 6, 9, 3, 1, 2, 6].
Subarray [ 1,3 ] (from index 1 to index 3) and [ 3,6 ] have all the elements that are present
In ‘SMALL’ array. The length of the sub-array [ 1, 3 ] is shorter. Therefore required answer = 3
The first line contains a single integer ‘T’ denoting the number of test cases.
The first line of each test contains two integers ‘M’ and ‘N’ - the number of elements in the ‘LARGE’ and ‘SMALL’ array respectively.
The third line of each test case contains ‘M’ space-separated integers that make up ‘LARGE’.
The fourth line of each test case contains ‘N’ space-separated integers that makeup ‘SMALL’.
For each test case, print an integer denoting the length of the shortest sub-array of ‘LARGE’ having all elements of ‘SMALL’.
If no such subarray exists, return ‘-1’.
You are not required to print anything; it has already been taken care of. Just implement the function and return the matrix.
1 <= T <= 50
1 <= M,N <= 10^4
1 <= LARGE[ i ] , SMALL[ i ] <=10^8
Time Limit: 1 sec
We will iterate through the ‘LARGE’ array and find all the shortest super sequences starting from every index of the ‘LARGE’ array and print the shortest of all.
Now the main task is to find the supersequence starting from an element at any index ‘ i ‘ of ‘large’ array.
For finding the supersequence starting from the ‘i - th’ element of the ‘LARGE’ array, we will iterate from large[ i ] and find the first nearest(index) of all the elements in the ‘small’ array. The maximum value of all the indices will be the end of the supersequence.
For example, if LARGE = [ 1,4 ,6,7] and SMALL = [ 4, 6]. For i = 0 , index of ‘4’ = 1, index of ‘6’ =2. As ‘2’ is maximum, so index = 2 will be the end of supersequence starting from ‘1’.
Algorithm:
In the naive approach, many computations to find the first nearest of the elements of the ‘SMALL’ array were performed again and again. We can reduce this by storing the nearest index of the first occurrence of ‘SMALL’ elements in an array.
We have to find the nearest index of the ‘LARGE’ array up to which all the elements in small elements occur.
We will maintain an array NEAREST. NEAREST [ i ] will store the nearest index of the ‘LARGE’ array such that LARGE[ i to NEAREST[i] ] have all elements of the ‘SMALL’ array.
(NEAREST[ i ] - i ) is the length of the supersequence. Minimum of NEAREST[ i ] - i will be the required answer.
Algorithm