Splitting string into words. Word contained in string. C language.

We are given 2 strings. We need to split strings into words and find word with minimal length contained in the first string, that is not contained in second string. Use function to check whether string contains a word.
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <alloc.h>
#include <ctype.h>
#include <limits.h>

char** words(char* str) {
        char** wrd;
        int i=0, j, k, l, n;
        wrd = (char**)calloc(1, sizeof(char*));
       n = strlen(str);
       l = 0;
       while (i < n) {
                while ( (i < n) && (!isalpha(str[i])) ) i++;
                j = i;
                while ( (j < n) && (isalpha(str[j])) ) j++;
                wrd =  (char**)realloc(wrd, (l+1) * sizeof(char*) );
                wrd[l] = (char*)calloc( j-i, sizeof(char) );
                for (k = i ; k < j; k++)
                        wrd[l][k-i] = str[k];
                wrd[l][j-i] = '\0';
                l++;
        i = j;
        }
    wrd =  (char**)realloc(wrd, (l+1) * sizeof(char*) );
    wrd[l] = (char*)calloc( 1 , sizeof(char) );
    wrd[l][0] = '\0';
   return wrd;
}


int word_in_string(char* word, char* str) {
        int i=0, j, h, l, n, word_n;
        n = strlen(str);
        word_n = strlen(word);
        while (i < n) {
                while ( (i < n) && (!isalpha(str[i])) ) i++;
                j = i;
                while ( (j < n) && (isalpha(str[j])) ) j++;
                l = 1;
                if ( j-i == word_n) {
                        l = 0;
                        for (h = i; h < j; h++)
                                if ( (str[h] != word[h-i]) ) {
                                        l = 1;
                                        break;
                                }
                }
                if (l == 0) return 1;
        i = j;
        }
    return 0;
}

int main(int argc, char* argv[])
{
char *s1, *s2, *word;
int i=0, j, sim=0, l, k, h,  n1, n2, min, min_index;
char** wrds;

s1 = (char*)calloc(100, sizeof(char));
s2 = (char*)calloc(100, sizeof(char));

puts("Enter string #1:");
gets(s1);
puts("Enter string #2:");
gets(s2);

n1 = strlen(s1);
n2 = strlen(s2);
min = INT_MAX;
min_index = -1;

wrds = words(s1);

for(i=0; strlen(wrds[i]); i++)
        if (!word_in_string(wrds[i],s2) && (strlen(wrds[i]) < min) ) {
                min = strlen(wrds[i]);
                min_index = i;
        }
        
if (min_index > 0)
        puts(wrds[min_index]);

free(s1);
free(s2);
for (j = 0; j < i; j++) free(wrds[j]);
free(wrds);
getch();
return 0;
}