{ Sprendim… bei testus pareng‚ Sigita Beružaityt‚.
  Perskaitome abu vardus bei pavardes ir sujungiame  vien… simboli—
  eilutŠ, ižtrindami tarpus (jei j— atsiranda sujungiant eilutes),
  visas did‘i…sias raides pakei‡iame ma‘osiomis.

  Skaitome pirm…j eilut‚s simbol ir iežkome likusioje eilut‚s dalyje
  toki— pat raid‘i—, j— vietoje ražydami nulius. Suskai‡iavŠ žias
  raides pereiname prie antrosios eilut‚s raid‚s ir t. t. kol pasieksime
  eilut‚s gal…. Iž skaitmen— formuojame simboli— eilutŠ, nes su ja dirbti
  bus lengviau, nei su dideliu skai‡iumi (ilgiausias skai‡ius gali b–ti 32
  skaitmen—). Tada sudedame eilut‚s pirmojo ir paskutiniojo, antrojo ir
  priežpaskutinio ir t. t. simboli— reikžmes, skai‡i— v‚l transformuojame
   simbol ir priražome j prie pradin‚s eilut‚s galo. Po to pirmuosius
  simbolius ižtriname ir tai kartojame tol, kol simboli— eilut‚ yra ilgesn‚,
  nei du simboliai. }

program bureja;
   var mazraides, didraides: string;

  procedure eilute (v1, p1, v2, p2: string;
                    var s: string;
                    var ilgis: integer);
     var i : integer;

     procedure keisti (var raide: char);
        var raid: integer;
     begin
        raid := pos (raide, didraides);
        raide := mazraides [raid]
     end;

  begin
    s := v1 + p1 + v2 + p2;
    ilgis := length (s);
    i := 1;
    while i <= ilgis do  { did‘iosios raid‚s pakei‡iamos }
       if s[i] = ' '     { ma‘osiomis ir praleid‘iami tarpo simboliai }
          then begin
                  delete (s, i, 1);
                  ilgis := ilgis - 1
                end
          else if pos (s[i], didraides) <> 0
            then begin
                    keisti (s[i]);
                    i := i + 1
                 end
            else i := i + 1;
   end; { eilute }

  procedure skaityti (var v1, p1, v2, p2: string);
    var f: text;
  begin
    assign (f, 'bur.dat');
    reset (f);
    readln (f, v1, p1);
    readln (f, v2, p2);
    close (f)
  end;

  function rezultatas (s: string; ilgis: integer): integer;
    var sk1, raide, sk: string;
        i, j, suma, kodas, s1, s2, rez: integer;
  begin
     i := 1;  sk1 := '';
     while i <= ilgis do
        begin  { randame sk1 }
           if s[i] = '0' then i := i + 1
              else begin
                      raide := s[i];
                      s[i] := '0';
                      suma := 1;
                      while pos(raide, s) <> 0 do
                      { skai‡iuojame vienodas raides, j— vietoje }
                         begin  { ražome nul }
                          j := pos(raide, s);
                          if j <> 0
                           then begin
                                  suma := suma + 1;
                                  s[j] := '0'
                                 end;
                        end;
                      i := i + 1;
                      str(suma, sk);
                      sk1 := sk1 + sk { skaitmenis ražome kaip }
                    end               { simboli— eilutŠ }
        end;
      while length (sk1) > 2 do
        begin
          ilgis := length (sk1);
          for i := 1 to ilgis div 2 do
             begin
               val(sk1[i], s1, kodas);
               val(sk1[ilgis-i+1], s2, kodas);
               suma := s1 + s2;  { sudedame pirm…j ir }
               str(suma, sk);    { paskutinj skaitmenis }
               sk1 := sk1 + sk
               { gaut… skaitmen priražome prie sk1 galo }
             end;
          if ilgis mod 2 = 1
            then sk1 := sk1 + sk1[ilgis div 2+1];
          delete (sk1, 1, ilgis) { ižtriname pirmuosius skai‡ius }
        end;
        val (sk1, rez, kodas);
    rezultatas := rez
  end;

  var v1, v2, p1, p2, s: string;
      ilgis, rez: integer;
begin
   mazraides := '…‘ertyuiop‚Š–—lkjhgfdsa‡žmnbvc×zxw';
   didraides := '’ERTYUIOP­‹¦§LKJHGFDSA€ŸMNBVCÇZXW';
   skaityti (v1, p1, v2, p2);
   eilute (v1, p1, v2, p2, s, ilgis);
   rez := rezultatas (s, ilgis);
   writeln (rez)
end.