// Mike Gellman
// 7/23/02
#include <ctype.h>
#include <stdio.h>
#include <string.h>

// Returns the number of characters in caString before the first occurance
// of a space or newline.
int numChars(char caString[], int iLength)
{
	int i,iCount=0;

	for ( i=0;i<iLength;i++)
	{
		if ( ( caString[i] != ' ' ) && ( caString[i] != '\n' ) )
		{
			iCount++;
		}
	}
	return(iCount);
}

// Converts a character array to lower case.
void alllower(char word[]) {

  for (int i=0; word[i] != '\0'; i++)
    word[i] = tolower(word[i]);
}

void main (int argc, char *argv[])
{
	char caLine[100], caSavedLine[100];
	char *cpPalStart=NULL;
	int iPalLength=0,iLeft,iSearch,iPalNumChars=0;
	int iCompL,iCompR;

	// Opens the input file.
	FILE *fp=fopen("pal.in","r");
	if (fp) 
	{
		// Loop until there is no more input.
		while ( fgets(caLine,100,fp) )
		{
			// Save a copy of the input line.
			strcpy(caSavedLine,caLine);
 			alllower(caLine);

			// Loop through all the letters in the line.
			for ( iLeft=0;iLeft<strlen(caLine);iLeft++)
			{

				// Start your search from the second char.
				for ( iSearch=iLeft+1;iSearch<strlen(caLine);iSearch++)
				{
		
					// Determine size of current pal.
					if ( ( caLine[iSearch] == caLine[iLeft] ) )
					{
						iCompL = iLeft;
						iCompR = iSearch;

						// Compare symmetrical characters until there is no longer a palindrome.
						do
						{
							while ( caLine[++iCompL] == ' ' ) {}
							while ( caLine[--iCompR] == ' ' ) {}
						}
						while ( (caLine[iCompL] == caLine[iCompR]) && ( iCompL < iCompR ) );
						
						// Update longest pal if necessary.
						if ( iCompL >= iCompR )
						{
							if ( numChars(caLine+iLeft, iSearch - iLeft + 1) > iPalNumChars )
							{
								iPalLength = iSearch - iLeft + 1;
								cpPalStart = caLine + iLeft;
								iPalNumChars = numChars(caLine+iLeft, iSearch - iLeft + 1);
							}
						}
					}
				}
			}

			strcpy(caLine,caSavedLine);

			// Print output.
			if ( cpPalStart ) 
			{
				cpPalStart[iPalLength] = '\0';
				printf("%s\n",cpPalStart);
			}
			else 
			{
				printf("%c\n",caLine[0]);
			}
			cpPalStart = NULL;
			iPalLength = 0;
			iPalNumChars = 0;

		}
	}

}
