Help explain what this code does? Step by step please.. thanks!Code:#include<stdio.h> #include<stdlib.h> #include<string.h> int main() { int size = 0, counter = 0; char *data = calloc(size, sizeof(char)); int length = 1, counter1 = 0; char **input = 0; do { input = realloc(input,sizeof(char*) *length); printf("Enter a word:"); size = 0; free(data); data = 0; do { size++; data = realloc(data, size+1); *(data+size-1) = fgetc(stdin); } while(*(data+size-1) != '\n'); data = realloc(data, size+1); *(data+size) = 0; input[counter1] = calloc(size+3, sizeof(char)); strcpy(input[counter1], data); length++; counter1++; } while(strcmp(input[counter1-1], "end\n") != 0); counter=0; while(counter < counter1) { printf("%s", input[counter]); counter++; } }