/* Auteur: Nicolas JANEY          */
/* nicolas.janey@univ-fcomte.fr   */
/* Fevrier 2005                   */

import java.io.*;

public class TestPalindrome {
  static BufferedReader flux = new BufferedReader(new InputStreamReader(System.in));
  
  /* Fonction de creation d'un tableau de caracteres      */
  /* initialise avec tous les caracteres                  */
  /* d'une chaine de caracteres                           */
  /* s : chaine de caracteres a traiter                   */
  /* Resultat fonction : tableau de caractere             */

  public static char [] initTableau(String s) {
    int n = s.length();
    char [] t = new char[n];
    for ( int i = 0 ; i < n ; i++ )
      t[i] = s.charAt(i);
    return(t);
  }
  
  /* Fonction de creation d'une chaine de caracteres      */
  /* initialisee avec tous les caracteres                 */
  /* d'une tableau de caracteres                          */
  /* t : tableau de caractere a traiter                   */
  /* Resultat fonction : chaine de caracteres             */

  public static String chaine(char [] t) {
    String s = "";
    for ( int i = 0 ; i < t.length ; i++ )
      s = s+t[i];
    return(s);
  }
  
  /* Fonction d'affichage d'un tableau de caracteres      */
  /* t : tableau de caractere a afficher                  */

  public static void afficheTableau(char [] t) {
    for ( int i = 0 ; i < t.length ; i++ )
      System.out.print(t[i]);
  }

  /* Fonction de test si la suite de caracteres           */
  /* d'un tableau de caractere est un palindrome          */
  /* t : tableau de caractere a inverser                  */
  /* Resultat fonction : booleen                          */

  public static boolean testPalindrome(char [] t) {
  /* Calcul de la taille du tableau t                     */
    int n = t.length;
  /* Definition et initialisation a 0 d'un entier         */
  /* utilise comme indice pour parcourir la suite         */
  /* de caractere du tableau                              */
    int i = 0;
  /* Boucle tant que avec deux conditions d'arret         */
  /* composees par et:                                    */
  /* - On a trouver deux caracteres differents            */
  /* aux indices i et n-1-i -> ce n'est pas un palindrome */
  /* - On a parcouru plus de (l sur 2) caracteres dans    */
  /* le tableau -> c'est un palindrome                    */
    while ( ( t[i] == t[n-1-i] ) && ( i < n/2 ) )
      i++;
  /* Calcul du resultat                                   */
    return(t[i] == t[n-1-i]);
  }

  /* Fonction principale                                  */

  public static void main(String [] args) throws IOException {
  /* Test de la chaine "ABCDEFGHI"                        */
    { char [] mot = initTableau("ABCDEFGHI");
      System.out.println(chaine(mot)+" : "+testPalindrome(mot)); }
  /* Test de la chaine "KAYAK"                            */
    { char [] mot = initTableau("KAYAK");
      System.out.println(chaine(mot)+" : "+testPalindrome(mot)); }
  /* Definition d'une boucle infinie de lecture           */
  /* au clavier d'une chaine de caracteres, calcul        */
  /* du tableau de caractere correspondant a cette chaine */
  /* et test de ce tableau                                */
    while ( true ) {
      System.out.print("Quelle est la chaine a tester? : ");
      String s = flux.readLine();
      char [] mot = initTableau(s);
      System.out.println(chaine(mot)+" : "+testPalindrome(mot)); }
  }
}