base = 10

explore(x, f) = {
	nb++;

	while (f++<=#ext,
		for (k=1, #ext[f],
			if (bitand(x, ext[f][k])==0,
				explore (x+ext[f][k], f);
			);
		);
	);
}

a(n) = {
	nb=0;

	if (n==0,
		nb++,

		ext = vector(min(n, base-1), k, []);
		for (d=1, base-1,
			my (m=0, x=n-1);
			while (!bittest(m, x),
				m+=2^x;
				x=(x-d)%n;
			);
			for (k=1, min(1+valuation(m,2), #ext),
				ext[k]=concat(ext[k], m);
				m>>=1;
			);
		);

		apply (x -> explore(x, 1), ext[1]);
	);

	return (nb);
}

for (n=0, 10 000, print (n " " a(n)))

quit