#include #include #include char input[4001][201]; char sablona[201]; int main() { while (1) { int cases; int i, min_index; int lines = 0; int min_length = 201; scanf("%d\n", &cases); if (!cases) break; for (i = 0; i < cases; i++) { gets(input[lines]); if (min_length > strlen(input[lines])) { min_length = strlen(input[lines]); min_index = lines; } lines++; } int len = strlen(input[min_index]); int offset = 0; int j; int max_match = 0; char string_match[201]; for (i = len-1; i >= 0; i--) { for (offset = 0; offset < len-2; offset++) { strncpy(sablona, input[min_index]+offset, i); /* printf("%s\n", sablona);*/ int match = 0; for (j = 0; j < lines; j++) { if (strstr(input[j], sablona)) { match++; /* if (strlen(sablona) > max_match) { max_match = strlen(sablona); strcpy(string_match, sablona); } if (strlen(sablona) == max_match && strcmp(sablona, string_match) < 0) { max_match = strlen(sablona); strcpy(string_match, sablona); }*/ } } if(match == lines) { if (strlen(sablona) > max_match || (strlen(sablona) == max_match && strcmp(string_match, sablona) > 0)) { strcpy(string_match, sablona); max_match = strlen(sablona); } } } if (max_match != 0) { break; } } if (max_match != 0) { printf("%s\n", string_match); } else { printf("IDENTITY LOST %s\n", input[i]); } /* printf("MIN: %d\n", min_index); for (i = 0; i < lines; i++) { printf("%s\n", input[i]); }*/ } return 0; }