uses crt;
type Natur=1..maxInt;
function digits(n:Natur):Natur;
var k:Natur;
m:set of byte;
d:Natur;
begin
m:=[n mod 10]; //последняя с конца цифра
d:=1;
while n>9 do //если бы был тип byte, то можно было бы сразу до 0
begin
k:=n mod 10; //последняя цифра
if not(k in m) then //если ее еще нет в множестве
begin
d:=d+1; //считаем
m:=m+[k];//в множество
end;
n:=n div 10; //сокращаем число
end;
if not(n in m) then d:=d+1; //осталась 1 цифра, проверим ее
digits:=d;//значение функции
end;
procedure print(n:Natur);
var m:set of byte;
k:byte;
begin
m:=[];
while n>9 do
begin
m:=m+[n mod 10];
n:=n div 10;
end;
m:=m+[n];
writeln('Цифры, не входящие в запись числа:');
for k:=0 to 9 do
if not(k in m) then write(k,' ');
end;
var a,b:Natur;
begin
write('a=');
readln(a);
b:=a; //при вычислении число уничтожим, поэтому сделаем клона
writeln('Количество разных цифр=',digits(a));
writeln;
print(b);
readln
end.