Program Ukazateli;
type
PNode = ^TNode;
TList = record
start, finish: PNode;
end;
TNode = record
n: integer;
s: string;
next: PNode;
end;
procedure AddToList(var L: TList; s: string; digits: integer);
var
T: PNode;
begin
new(T);
T^.next := nil;
T^.s := s;
T^.n := digits;
if L.start = nil then
L.start := T
else
L.finish^.next := T;
L.finish := T;
end;
function SortList(L: PNode): PNode;
var
i, j: PNode;
q: TNode;
begin
i := L;
while i <> nil do
begin
j := L;
while j <> nil do
begin
if i^.n < j^.n then
begin
q := i^;
i^.n := j^.n;
i^.s := j^.s;
j^.n := q.n;
j^.s := q.s;
end;
j := j^.next;
end;
i := i^.next;
end;
end;
procedure PrintList(L: PNode);
begin
while L <> nil do
begin
writeln(L^.s);
L := L^.next;
end;
end;
function Count(s: string): integer;
var
k, i: integer;
begin
k := 0;
for i := 1 to Length(s) do
if s[i] in ['0' .. '9'] then
inc(k);
Count := k;
end;
var
f: text;
s: string;
MyList: TList;
n: integer;
begin
MyList.start := nil;
MyList.finish := nil;
assign(f, 'PFile.txt');
reset(f);
while not seekeof(f) do
begin
readln(f, s);
n := Count(s);
if n > 0 then
AddToList(MyList, s, n);
end;
close(f);
PrintList(MyList.start);
readln;
SortList(MyList.start);
PrintList(MyList.start);
readln;
end.