Если еще не поздно, то вот. Отлажено.
VAR
i,j,k,j0,Lng,Lng1,Lng2,M:BYTE;
S,S1,S2:STRING;
BEGIN
Write('Input string = '); ReadLn(S);
Lng:=Length(S);
j:=0;
FOR i:=1 TO Lng DO
IF (ORD(S[i])>=65) AND (ORD(S[i])<=90) THEN
BEGIN
INC(j);
S1[j]:=S[i];
END ELSE
IF (ORD(S[i])>=97) AND (ORD(S[i])<=122) THEN
BEGIN
INC(j);
S1[j]:=CHR(ORD(S[i])-32);
END;
Lng1:=j;
FOR j:=1 TO Lng1 DO
WRITE(S1[j]);
WRITELN;
M:=255;
Lng2:=Lng1;
FOR i:=1 TO Lng1 DO
BEGIN
FOR j:=1 TO Lng2 DO
IF ORD(S1[j])<=M THEN
BEGIN
M:=ORD(S1[j]);
j0:=j;
END;
S2[i]:=S1[j0];
IF j0<Lng2 THEN
FOR k:=j0+1 TO Lng2 DO
S1[k-1]:=S1[k];
DEC(Lng2);
M:=255;
END;
FOR i:=1 TO Lng1 DO
Write(S2[i]);
READLN;
END.