/*
 * C Program to Display every possible Combination of two Words
 * or Strings from the input Strings without Repeated Combinations
*/
#include <stdio.h>
#include <string.h>

void main()
{
    int i, j = 0, k, k1 = 0, k2 = 0, row = 0;
    char temp[50];
    char str[100], str2[100], str1[5][20], str3[6][20], str4[60][40];
    printf("enter the string :");
    scanf(" %[^
         ]s", &str);
    printf("enter string:");
    scanf(" %[^
         ]s", &str2);
    /* read strings into 2d character arrays */
    for (i = 0; str[i] != ''; i++)
        {
            if (str[i] == ' ')
                {
                    str1[k1][j] = '';
                    k1++;
                    j = 0;
                }
            else
                {
                    str1[k1][j] = str[i];
                    j++;
                }
        }
    str1[k1][j] = '';
    j = 0;
    for (i = 0; str2[i] != ''; i++)
        {
            if (str2[i] == ' ')
                {
                    str3[k2][j] = '';
                    k2++;
                    j = 0;
                }
            else
                {
                    str3[k2][j] = str2[i];
                    j++;
                }
        }
    str3[k2][j] = '';
    /* concatenates string1 words with string2 and stores in 2d array */
    row = 0;
    for (i = 0; i <= k1; i++)
        {
            for (j = 0; j <= k2; j++)
                {
                    strcpy(temp, str1[i]);
                    strcat(temp, str3[j]);
                    strcpy(str4[row], temp);
                    row++;
                }
        }
    for (i = 0; i <= k2; i++)
        {
            for (j = 0; j <= k1; j++)
                {
                    strcpy(temp, str3[i]);
                    strcat(temp, str1[j]);
                    strcpy(str4[row], temp);
                    row++;
                }
        }
    /* eliminates repeated combinations */
    for (i = 0; i < row; i++)
        {
            for (j = i + 1; j < row; j++)
                {
                    if (strcmp(str4[i], str4[j]) == 0)
                        {
                            for (k = j; k <= row; k++)
                                {
                                    strcpy(str4[k], str4[k + 1]);
                                }
                            row--;
                        }
                }
        }
    /* displays the output */
    for (i = 0; i < row; i++)
        {
            printf("
                   %s", str4[i]);
        }
}
