program nacitavac;
{program ktory nacitava retazce a na
koniec vypise prvy a posledny v abecede}
var s,prvy,posledny:string;

{funkcia, ktora kontroluje, ci je nejake
slovo dobre - ci obsahuje len pismenka
malej anglickej abecedy}

function skontroluj(a:string):integer;
var i:integer;
begin

{pre vsetky pismenka daneho slova...}
   for i:=1 to length(a) do
{sa opytame na ich ord hodnotu,
a ak je mensai ako hodnota -a- alebo
vacsia ako hodnota -z-, tak to nieje
male pismenko a slovo je cele zle}

     if (ord(a[i])<97)or(ord(a[i])>122) then
     begin

       skontroluj:=0;
       exit;

     end;

{neskoncili sme - slovo bolo cele dobre, lebo
v nom nebolo zle pismenko}

   skontroluj:=1;

end;

{funkcia porovnavajuca dlzky slov}
function pordlzku(a,b:string):integer;
begin

  if length(a)>length(b) then pordlzku:=-1;
  if length(b)>length(a) then pordlzku:=1;
  if length(a)=length(b) then pordlzku:=0;

end;

{funkcia, ktora porovna dve dobre slova podla
abecedy}
function porabecedne(a,b:string):integer;
var i,minimum:integer;
begin

{najskor urci pocet pismen, na ktorych
ma zmysel porovnavat - dlzka kratsieho slova
z nich}
   if pordlzku(a,b)=1 then minimum:=length(a)
   else minimum := length(b);

{no a zacne porovnavat
ked zisti ze sa pismena nezhoduju
(jedno je bud skor alebo neskor)
tak rozhodne, ktore so slov je skorej
alebo neskorej v abecede a skonci}
   for i:=1 to minimum do
   begin

     if ord(a[i])>ord(b[i]) then
     begin

       porabecedne:=-1;
       exit;

     end;

     if ord(a[i])<ord(b[i]) then
     begin

       porabecedne:=1;
       exit;

     end;


   end;

{ked sme prisli sem, znamena to, ze
slova su rovnake tam, kde sa daju porovnat...
vtedy porovname ich dlzky. ktore je dlhsie, to
prehlasime za neskor v abecede. ak su rovnako dlhe,
znamena ze sa nelisia vobec a su uplne rovnake.
na toto nam bude uplne stacit funkcia pordlzku,
ktorej vystupna hodnota bude vystupna hodnota
funkcia, ktora porovnava abecedne slova}
   porabecedne:=pordlzku(a,b);


end;


begin

{pociatocne nastavenie }
  prvy:='zzzzzzzzzzzzzz';
  posledny:='';

{a cykolus, ktory bezi az po nacitanie slova koniec}
  repeat

     readln(s);
{najskor ho skontroluje, ci je to dobre slovo}

     if skontroluj(s)=1 then
     begin

{ak je , tka ho porovname z doteraz najdenymi a pripradne
pripradime...}
       if porabecedne(prvy,s)=-1 then prvy:=s;
       if porabecedne(s,posledny)=-1 then posledny:=s;

     end
{ak nieje dobre, tka vypiseme hlasku a pokracujeme bez toho,
aby sme ho spracovali}
     else writeln('Toto slovo nie spravne a nebude spracovane');


  until s='koniec';

  {sprava o vysledku a koniec}
  writeln('Prve slovo v abecede je -',prvy,'- a posledne je -',posledny,'-.');
  readln;


end.
