- #include <iostream> 
- #include <cstring> 
- using namespace std; 
-   
- const int registerShift = 'A' - 'a'; // Сдвиг от верхнего регистра к нижнему по таблице ASCII 
-   
- // Функция, для определния, является ли текущий символ "буквой" в контексте данной задачи 
- bool IsAllowedSymbol(char symbol) { 
- 	return ((symbol >= '1' && symbol <= '9') || (symbol >= 'a' && symbol <= 'z') || (symbol >= 'A' && symbol <= 'Z')) ? true : false; 
- } 
-   
- // Функция, для определения, является ли текущее слово палиндромом 
- bool IsPalindrom(char *word, int begin, int end) { 
- 	return (end <= begin) ? true : (word[begin] != word[end]) ? false : IsPalindrom(word, ++begin, --end); 
- } 
-   
- // Функция, которая переводит все слово в нижний регистр 
- void ToLowerCase(char *word) { 
- 	 for (int i = 0; i < strlen(word); i++) { 
- 	 	  if (word[i] >= 'A' && word[i] <= 'Z') 
- 	 	      word[i] -= registerShift; 
- 	 } 
- } 
-   
- int main() { 
- 	char word[1001]; 
- 	int wordSize, maxSize = 0, indexOfPalindrom = 0; 
-     for (int i = 1; cin >> word; i++) { 
-     	 ToLowerCase(word); // Перевод слова в нижний регистр  
-     	 if (!IsAllowedSymbol(word[strlen(word) - 1])) 
-     	     word[strlen(word) - 1] = '\0'; // Не учитывать последний символ слова, если это не "буква" (т. е. знак препинания) 
-     	 wordSize = strlen(word); 
-     	 if (wordSize > maxSize) { 
- 	         if (IsPalindrom(word, 0, wordSize - 1)) { 
- 	         	 maxSize = wordSize; 
- 	             indexOfPalindrom = i;	     
- 	         } // Храним новый максимум и индекс текущего наибольшего палиндрома, если он был найден 
- 	     } 
-     } // Чтение по словам до конца предложения 
- 	cout << indexOfPalindrom; 
-     return 0; 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCByZWdpc3RlclNoaWZ0ID0gJ0EnIC0gJ2EnOyAvLyDQodC00LLQuNCzINC+0YIg0LLQtdGA0YXQvdC10LPQviDRgNC10LPQuNGB0YLRgNCwINC6INC90LjQttC90LXQvNGDINC/0L4g0YLQsNCx0LvQuNGG0LUgQVNDSUkKCi8vINCk0YPQvdC60YbQuNGPLCDQtNC70Y8g0L7Qv9GA0LXQtNC10LvQvdC40Y8sINGP0LLQu9GP0LXRgtGB0Y8g0LvQuCDRgtC10LrRg9GJ0LjQuSDRgdC40LzQstC+0LsgItCx0YPQutCy0L7QuSIg0LIg0LrQvtC90YLQtdC60YHRgtC1INC00LDQvdC90L7QuSDQt9Cw0LTQsNGH0LgKYm9vbCBJc0FsbG93ZWRTeW1ib2woY2hhciBzeW1ib2wpIHsKCXJldHVybiAoKHN5bWJvbCA+PSAnMScgJiYgc3ltYm9sIDw9ICc5JykgfHwgKHN5bWJvbCA+PSAnYScgJiYgc3ltYm9sIDw9ICd6JykgfHwgKHN5bWJvbCA+PSAnQScgJiYgc3ltYm9sIDw9ICdaJykpID8gdHJ1ZSA6IGZhbHNlOwp9CgovLyDQpNGD0L3QutGG0LjRjywg0LTQu9GPINC+0L/RgNC10LTQtdC70LXQvdC40Y8sINGP0LLQu9GP0LXRgtGB0Y8g0LvQuCDRgtC10LrRg9GJ0LXQtSDRgdC70L7QstC+INC/0LDQu9C40L3QtNGA0L7QvNC+0LwKYm9vbCBJc1BhbGluZHJvbShjaGFyICp3b3JkLCBpbnQgYmVnaW4sIGludCBlbmQpIHsKCXJldHVybiAoZW5kIDw9IGJlZ2luKSA/IHRydWUgOiAod29yZFtiZWdpbl0gIT0gd29yZFtlbmRdKSA/IGZhbHNlIDogSXNQYWxpbmRyb20od29yZCwgKytiZWdpbiwgLS1lbmQpOwp9CgovLyDQpNGD0L3QutGG0LjRjywg0LrQvtGC0L7RgNCw0Y8g0L/QtdGA0LXQstC+0LTQuNGCINCy0YHQtSDRgdC70L7QstC+INCyINC90LjQttC90LjQuSDRgNC10LPQuNGB0YLRgAp2b2lkIFRvTG93ZXJDYXNlKGNoYXIgKndvcmQpIHsKCSBmb3IgKGludCBpID0gMDsgaSA8IHN0cmxlbih3b3JkKTsgaSsrKSB7CgkgCSAgaWYgKHdvcmRbaV0gPj0gJ0EnICYmIHdvcmRbaV0gPD0gJ1onKQoJIAkgICAgICB3b3JkW2ldIC09IHJlZ2lzdGVyU2hpZnQ7CgkgfQp9CgppbnQgbWFpbigpIHsKCWNoYXIgd29yZFsxMDAxXTsKCWludCB3b3JkU2l6ZSwgbWF4U2l6ZSA9IDAsIGluZGV4T2ZQYWxpbmRyb20gPSAwOwogICAgZm9yIChpbnQgaSA9IDE7IGNpbiA+PiB3b3JkOyBpKyspIHsKICAgIAkgVG9Mb3dlckNhc2Uod29yZCk7IC8vINCf0LXRgNC10LLQvtC0INGB0LvQvtCy0LAg0LIg0L3QuNC20L3QuNC5INGA0LXQs9C40YHRgtGAIAogICAgCSBpZiAoIUlzQWxsb3dlZFN5bWJvbCh3b3JkW3N0cmxlbih3b3JkKSAtIDFdKSkKICAgIAkgICAgIHdvcmRbc3RybGVuKHdvcmQpIC0gMV0gPSAnXDAnOyAvLyDQndC1INGD0YfQuNGC0YvQstCw0YLRjCDQv9C+0YHQu9C10LTQvdC40Lkg0YHQuNC80LLQvtC7INGB0LvQvtCy0LAsINC10YHQu9C4INGN0YLQviDQvdC1ICLQsdGD0LrQstCwIiAo0YIuINC1LiDQt9C90LDQuiDQv9GA0LXQv9C40L3QsNC90LjRjykKICAgIAkgd29yZFNpemUgPSBzdHJsZW4od29yZCk7CiAgICAJIGlmICh3b3JkU2l6ZSA+IG1heFNpemUpIHsKCSAgICAgICAgIGlmIChJc1BhbGluZHJvbSh3b3JkLCAwLCB3b3JkU2l6ZSAtIDEpKSB7CgkgICAgICAgICAJIG1heFNpemUgPSB3b3JkU2l6ZTsKCSAgICAgICAgICAgICBpbmRleE9mUGFsaW5kcm9tID0gaTsJICAgIAoJICAgICAgICAgfSAvLyDQpdGA0LDQvdC40Lwg0L3QvtCy0YvQuSDQvNCw0LrRgdC40LzRg9C8INC4INC40L3QtNC10LrRgSDRgtC10LrRg9GJ0LXQs9C+INC90LDQuNCx0L7Qu9GM0YjQtdCz0L4g0L/QsNC70LjQvdC00YDQvtC80LAsINC10YHQu9C4INC+0L0g0LHRi9C7INC90LDQudC00LXQvQoJICAgICB9CiAgICB9IC8vINCn0YLQtdC90LjQtSDQv9C+INGB0LvQvtCy0LDQvCDQtNC+INC60L7QvdGG0LAg0L/RgNC10LTQu9C+0LbQtdC90LjRjwoJY291dCA8PCBpbmRleE9mUGFsaW5kcm9tOwogICAgcmV0dXJuIDA7Cn0=