clist:= proc(c, n) local V;
V:= Vector(n);
V[convert(c, list)]:= 1;
convert(V, list);
end proc:
f:= proc(n, k)
uses GraphTheory, combinat;
local Verts, dist, E, G, V0, G0, vk, Vk, G1;
if k = 0 then return 1
elif k >= n then return 2^n
fi;
Verts:= map(clist, convert(powerset(n), list), n);
dist:= Matrix(2^n, 2^n, shape=symmetric, (i, j) -> convert(abs~(Verts[i]-Verts[j]), `+`));
E:= select(e -> dist[e[1], e[2]]<=k, {seq(seq({i, j}, j=i+1..2^n), i=1..2^n)});
G:= Graph(2^n, E);
V0:= Neighborhood(G, 1, 'open');
G0:= InducedSubgraph(G, V0);
vk:= select(j -> dist[1, j] = k, V0);
Vk:= Neighborhood(G0, vk[1], 'open');
G1:= InducedSubgraph(G0, Vk);
CliqueNumber(G1)+2;
end proc:
seq(seq(f(n, k), k=0..n), n=0..6);