/*
* Question :
*
*
* Minimum Distance between words[AMAZON]
* Posted on June 12, 2018
*
* A string S is passed as the input.Two words w1 and w2 which are present in the string S are also passed as the input.
* The program must find the minimum distance d between W1 and W2 in S (in forward or reverse order)and print D as the output.
*
* Example 1:
*
* Input:
* The brown quick frog quick the
* the
* quick
* Output:
* 1
* Explanation:
* quick and the are adjacent as the last two words.Hence distance between them is 1.
*
*
* Example 2:
*
* Input:
* the quick the brown quick brown the frog
* quick
* frog
* Output:
* 3
*
*/
// Program:
#include <stdio.h>
#include <string.h>
int main()
{
char sentence[50][50],w1[20],w2[20];
int i=0,l=0,m=0,min=100,index1[50],index2[50];
while(scanf("%s",sentence[i])>0) // since it's not an online practice work-flow
i++; // you have to use, ctrl+z to end the input reading
strcpy(w1,sentence[i-2]);
strcpy(w2,sentence[i-1]);
i=i-2;
for(int j=0;j<i;j++)
{
if(strcmp(sentence[j],w1)==0)
{
index1[l]=j; //getting the indexes of w1
l++;
}
else if(strcmp(sentence[j],w2)==0)
{
index2[m]=j; //indexes of w2
m++;
}
}
if(m==0) //condition if suppose both the words are same
printf("%d",l-2);
else
{
for(int j=0;j<l;j++)
{
for(int k=0;k<m;k++)
{
signed int diff;
diff=index1[j]-index2[k];
if(diff<0) //to change the neg integer to pos integer
diff=0-diff;
if(diff<min) //inorder to get the minimum value
min=diff;
}
}
printf("%d",min) ;
}
return 0;
}