Read("makesetcm_4.txt");

k1:= (19,20);
k2:= (1,7,12,17)(2,8,13,18)(3,9,14,4)(5,10,15,19)(6,11,16,20);
k3:= (1,13)(2,12)(3,9)(4,14)(5,15)(6,16)(7,8)(17,18);
cmetrick:=SymmetricGroup(20);
M:=Group(k1,k2,k3);


st:=Stabilizer(M,poss);
l:=LatticeSubgroups(st);
cl:=ConjugacyClassesSubgroups(l);
setgroups:=[];
for x in cl do
	setgroups:=Union(setgroups,Orbit(st,Representative(x)));
od;


IsMinimal:=function(el,grp)
local x,set;
set:=[];
for x in grp do
	AddSet(set,Position(gens,gens[el]^x));
od;
if set[1]=el then return true;
else
return false;
fi;
end;;

IsMinimal_t:=[];
for x in [1..16] do
IsMinimal_t[x]:=[];
od;

for y in [1..16] do
	for x in [1..Size(setgroups)] do
		IsMinimal_t[y][x]:=IsMinimal(y,setgroups[x]);
	od;
od;

stab:=[];
for x in [1..16] do
	stab[x]:=[];
od;

for x in [1..16] do
	for y in [1..Size(setgroups)] do
		stab[x][y]:=PositionSet( setgroups, Stabilizer(setgroups[y],gens[x]) );
	od;
od;



permited:=Union(m[1],m[2],m[3],m[4],m[5],m[6]);

v:=[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]];
init_el:=[PositionSet(setgroups,st)];
AddSet(v[1],init_el);
sett:=[];

conc:=function(elm)
local x,elm2;
elm2:=[];

for x in [2..Size(elm)] do
elm2[x-1]:=elm[x];
od;
return elm2;
end;; 

maxdepth:=15;
for x in [1..maxdepth] do
	cnt:=1;
	for y in v[x] do
		for z in [1..16] do	
			if IsMinimal_t[z][y[1]]=false then continue;fi;
			elm:=Concatenation(y,[z]);
			if Size(elm)=7 then elm:=[elm[1],elm[3],elm[4],elm[5],elm[6],elm[7]];fi;
					
			if PositionSet(permited,conc(elm))=fail then continue;fi;
			elm[1]:=stab[z][elm[1]];
			v[x+1][cnt]:=elm;
			cnt:=cnt+1;
		od;
	od;
	for w in [1..x] do
		v[x+1]:=Difference(v[x+1],v[w]);
	od;
	Print(Size(v[x+1]),"\n");
od;


twist_on_permited:=[];
for x in [1..16] do
	twist_on_permited[x]:=[];
od;
permited2:=Union(v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9]);

MakeImmutable(permited2);
permited:=Union(m[1],m[2],m[3],m[4],m[5],m[6]);
for y in [1..Size(permited2)] do
	for x in [1..16] do
		if IsMinimal_t[x][permited2[y][1]]=false then 
		twist_on_permited[x][y]:=-1;
		continue;
		fi;
		
		elm:=Concatenation(permited2[y],[x]);
		if Size(elm)=7 then elm:=[elm[1],elm[3],elm[4],elm[5],elm[6],elm[7]];fi;
		elm[1]:=stab[x][elm[1]];
		
		pos_xy:=PositionSet(permited2,elm);

		if pos_xy<>fail then
			twist_on_permited[x][y]:=pos_xy;
		else
			twist_on_permited[x][y]:=-1;
		fi;
		
	od;
od;






