program slaptrastis;
  const PR = 'SLAPT.DAT';
        RZ = 'SLAPT.REZ';
        MAX = 7; { maksimalus raid‘i— skai‡ius rakte }
  type lentele = array [1..MAX] of integer;

  procedure sunumeruoti (raktas: string; var num: lentele);
    var pirm, ilgis, i, j: integer;
  begin
    ilgis := length (raktas);
    for i := 1 to ilgis do
      begin
        { ižrenkame pirm…j… raidŠ }
        pirm := 1;
        while raktas[pirm] = ' ' do
          pirm := pirm + 1;
        for j := 2 to ilgis do
          if (raktas[j] < raktas[pirm]) and (raktas[j] <> ' ')
             then pirm := j;
        { simename jos numer }
        num[i] := pirm;
        { t… raidŠ pakei‡iame tarpu }
        raktas[pirm] := ' ';
      end;
  end; { sunumeruoti }

  procedure sifruoti (raktas, tekstas: string; var rez: string);
  { u‘sifruoja duot… tekst… pagal duot… rakt… }
    var num: lentele; { lentel‚je suražyta kokia tvarka reik‚s imti }
                      { stulpelius }
        stulp, stulp_sk, ilgis, i, j: integer;
  begin
    sunumeruoti (raktas, num);
    stulp_sk := length (raktas); { stulpeli— skai‡ius }
    ilgis := length (tekstas);   { teksto ilgis }
    rez := '';
    for i := 1 to stulp_sk do
      begin
        stulp := num[i]; { imsime i-ojo stulpelio raides }
        for j := 1 to ilgis div stulp_sk do
          rez := rez + tekstas[(j-1)*stulp_sk + stulp];
        { jei paskutin‚ eilu‚ nepilna pridedame jos raid3 }
        if ilgis div stulp_sk * stulp_sk + stulp <= ilgis
           then rez := rez +
                       tekstas[ilgis div stulp_sk * stulp_sk + stulp]
      end;
  end; { žifruoti }

  var f: text;
      raktas, tekstas, rez: string;
begin
  assign (f, PR);
  reset (f);
  readln (f, raktas);
  readln (f, tekstas);
  close (f);
  sifruoti (raktas, tekstas, rez);
  assign (f, RZ);
  rewrite (f);
  writeln (f, rez);
  close (f);
end.