/* Auteur: Nicolas JANEY          */
/* nicolas.janey@univ-fcomte.fr   */
/* Mars 2006                      */

import java.io.*;

public class CalculTransposee {
  static BufferedReader flux = new BufferedReader(new InputStreamReader(System.in));

  /* Creation d'une chaine de caracteres representant     */
  /* une chaine de caracteres complementee par            */
  /* des espaces pour obtenir une longueur totale fixee   */
  
  public static String format(String str,int l) {
    String s = new String(str);
    int i = s.length();
    for ( ; i < l ; i++ )
      s = " "+s;
    return(s);
  }

  /* Affichage d'une matrice de chaines de caracteres     */
  /* formatee en lignes et en colonnes                    */

  public static void affichageMatrice(String [][] m) {
    for ( int i = 0 ; i < m.length ; i++ ) {
      for ( int j = 0 ; j < m[i].length ; j++ )
        System.out.print(format(m[i][j],5));
      System.out.println(); }
  }

  /* Creation d'une chaine de caracteres tires au sort    */
  /* parmis les minuscules                                */
  
  public static String chaineAuHasard(int nb) {
    char [] c = new char[nb];
    for ( int j = 0 ; j < nb ; j++ )
      c[j] =(char) (97+Math.random()*25);
    return(String.copyValueOf(c));
  }
  
  /* Creation d'une matrice de chaines de caracteres      */
  /* tires au sort pour un nombre arbitraire              */
  /* de lignes et de colonnes                             */
  
  public static String [][] matriceAuHasard(int lignes,int colonnes,int max) {
    String [][] m = new String[lignes][colonnes];
    for ( int i = 0 ; i < lignes ; i++ )
      for ( int j = 0 ; j < colonnes ; j++ )
        m[i][j] = chaineAuHasard(max);
    return(m);
  }
  
  /* Transposition d'une matrice carree de chaines        */
  /* de caracteres                                        */
  
  public static void calculTransposee(String [][] m) {
    String aux;
    for ( int i = 0 ; i < m.length-1 ; i++ )
      for ( int j = i+1 ; j < m[i].length ; j++ ) {
        aux = m[i][j];
        m[i][j] = m[j][i];
        m[j][i] = aux; }
  }
  
  /* Fonction principale                                  */

  public static void main(String [] args) throws IOException {
    String [][] mat = matriceAuHasard(4,4,3);
    System.out.println("Matrice");
    affichageMatrice(mat);
    System.out.println();
    calculTransposee(mat);
    System.out.println("Matrice apres transposage");
    affichageMatrice(mat);
  }
}