program directoryes;
type stringvektor = Array[1..100] of String;
var f,g:Text;
C:Char;
filename,path,foldername,fname:String;
n,i:Integer;
pathvektor:stringvektor;
p:Integer;{the index of the pathvektor}
zjv:Array[1..1600] of 0..1; {zarojeles vektor}
helye,zny,zz:Integer; { a zarojeles (nyiltak illetve zartak) vektor szamlaloja}
mch:set of Char;
fileset:set of Char;
dir:Boolean;
V:Array[1..1601] of Char;
procedure rendez(var v:Stringvektor);
var rendezett:boolean;
i:Integer;
s:String;
aux:String;
begin
repeat
rendezett:=true;
for i:=1 to p-1 do
begin
{s:=v[i];
for j:=1 to length(s) do
begin
end;}
if v[i]>v[i+1] then
begin
aux:=v[i];
v[i]:=v[i+1];
v[i+1]:=aux;
rendezett:=false;
end;
end
until rendezett=true;
end;
begin
Assign(f,'dir.in');
Assign(g,'dir.out');
Reset(f);
ReWrite(g);
i:=0;
while not eof(f) do
begin
Read(f,C);
Inc(i);
v[i]:=C;
end;
n:=i;
{lets get procesing}
{init}
foldername:='';
filename:='';
mch:=['A'..'Z'];
fileset:=['a'..'z'];
zny:=0;
zz:=0;
dir:=false;
p:=0;
{kezdetbol a nyitott zarojelek szama egyenlo a zart zarojelek szamaval vagyis 0}
{this is the fun part:}
for i:=1 to n do
begin
C:=v[i];
if C in mch then
begin
foldername:=foldername+C;
end;
if C in ['('] then
begin
path:=path+foldername+'\';
fname:=foldername;
foldername:='';
Inc(zny);
zjv[zny]:=1;
end;
if C in [')'] then
begin
Inc(zz);
zjv[zz]:=0;
if v[i-1] <> '(' then
begin
{ignore emphty folders}
if filename<>'' then
begin
Inc(p);
pathvektor[p]:=path+filename;
filename:='';
end;
helye:=pos(fname,path);
Delete(path,helye,length(fname)+1);
end
else
begin
helye:=pos(fname,path);
Delete(path,helye,length(fname)+1);
end;
end;
if C in fileset then
begin
filename:=filename+C;
{ pathvektor[p]:=pathvektor[p]+path+C;}
end;
if C in [','] then
begin
if filename<>'' then
begin
Inc(p);
pathvektor[p]:=path+filename;
filename:='';
end;
end;
if C in ['0'..'9'] then
begin
if v[i-1] in mch then
begin
foldername:=foldername+C;
end;
if v[i-1] in fileset then
begin
filename:=filename+C;
{ pathvektor[p]:=pathvektor[p]+path+C;}
end;
end;
end;
{Ok lets pray that this worked}
{now lets sort it into alphabetical order}
rendez(pathvektor);
{lets write this out}
WriteLn(g,p);
for i:=1 to p do
begin
WriteLn(g,pathvektor[i]);
end;
Close(f);
Close(g);
end.