program permp (input,output);
type niz = array [1..20] of char;
var a, ta : niz;
p: array [1..20] of Boolean;
j,n,b: integer;
odg: Boolean;
odgt: char;
procedure stampa;
var i:integer;
begin
b:=b+1;
if odg then
begin
for i:=1 to n do
write(ta);
writeln;
end;
end;
procedure perm(i,m: integer);
var j,k: integer;
begin
if i<=n then
begin
k:=1;
if i>1 then if a=a[i-1] then k:=m;
for j:=k to n do
begin
if p[j] then begin
ta[j]:=a;
p[j]:=false;
perm(i+1,j+1);
p[j]:=true;
end
end
end
else
stampa
end;
begin
write ('Koliko elemenata: ');
readln (n);
write ('Unesite elemente tako da oni');
writeln ('koji se ponavljaju budu sukcesivni');
b:=0;
for j:=1 to n do
begin
readln(a[j]);
p[j]:=true
end;
write ('Zelite li ispis? ');
readln (odgt);
odg:= not ((odgt='N') or (odgt='n'));
perm(1,1);
writeln ('Ukupno: ', b);
end.