import algds.IOUtils;

public class aufgabe24
{
    public static void main(String[] args)
    {
        System.out.print("Geheimtext (keine Leerzeichen): ");
        String eingabe=IOUtils.readString();    //Geheimtext eingeben
        System.out.println(eingabe);
        code(eingabe);			//Aufruf von 'decode(String)'
    }


    public static void code(String eingabe)
    {
        System.out.print("Schluessel: ");		//Schluessel = Spaltenanzahl
        int spalten=IOUtils.readInt();
        int länge=eingabe.length();			//Länge des Geheimtextes
        int zeilen=länge/spalten;			//Anzahl der Zeilen
        int zn=0;
        int zlz=länge%spalten;		         	//Zeichen der letzten Zeile
        int n=0,m=0;					//linke-obere Ecke der Matrix
        int z=0;					//Zählvariable der Buchstaben des Textes
        char matrix[][]=new char[zeilen+1][spalten];	//initialisieren der Matrix

        if (zlz==0) zeilen--;
        while(z<länge)					//solange Buchstabeanzahl < Länge
        {
            if(n==zn)
            {						//Matrix in Spalte m von oben nach
                for(n=zn;n<=zeilen;n++){	        //unten mit den naechsten Zeichen füllen
                    matrix[n][m]=eingabe.charAt(z);
                    z++;				//Index des aktuellen Zeichens + 1
                }
                m++;					//nächste Spalte
                n=zeilen;
            }
            else
            {						//Matrix in Spalte m von unten nach
                for(n=zeilen;n>=zn;n--){	        //oben mit den naechsten Zeichen fuellen
                    matrix[n][m]=eingabe.charAt(z);
                    z++;				//Index des aktuellen Zeichens + 1
                }
                m++;					//nächste Spalte
                n=zn;
            }
            if(zlz!=0 && m>=zlz)			//wenn Anzahl der Zeichen in der
            {						//letzten Zeile erreicht ist,
                zeilen=zeilen-1;			//Zeilenzahl - 1
                zlz=spalten+1;
            }
        }
        System.out.println();
        //Ausgabe der aktuellen Matrix
        for(int i=0;i<zeilen+2;i++)			//Zeilen
        {
            for(int j=0;j<spalten;j++)			//Spalten
            System.out.print(matrix[i][j]+" ");
        }
    }
}