change(B,C,D,E,F,G,H,I,J,K, R) :-
  LD = [B,C,D,E,F,G,H,I,J,K],
  fd_domain(LD, 0, 1024),
  B*512 + C*256 + D*128 + E*64 + F*32 + G*16 + H*8 + I*4 + J*2 + K*1 #= R,
  fd_labeling(LD)
  .

len([], 0).
len([_|T], L) :-
  len(T, Lt),
  L #= 1 + Lt
  .

q(N, OUT) :-
  findall([B,C,D,E,F,G,H,I,J,K], change(B,C,D,E,F,G,H,I,J,K, N), LST),
  len(LST, OUT)
  .

/*
   example query to count the results:
     q(4, N).
   example query to show all the results:
     change(B,C,D,E,F,G,H,I,J,K, 4).
 */
