Wymuś Prologowi wybranie unikalnych wartości zmiennych

OK, jestem nowy w Prologu, więc przepraszam, jeśli jest to coś trywialnego, ale nie mogę znaleźć odpowiedniej eleganckiej odpowiedzi na to pytanie. Próbuję opracować ćwiczenie tutajlearnprolognow.org, ćwiczenie 2.4 (krzyżówka).

Ćwiczenie dostarcza następujących faktów:

   word(astante,  a,s,t,a,n,t,e). 
   word(astoria,  a,s,t,o,r,i,a). 
   word(baratto,  b,a,r,a,t,t,o). 
   word(cobalto,  c,o,b,a,l,t,o). 
   word(pistola,  p,i,s,t,o,l,a). 
   word(statale,  s,t,a,t,a,l,e).

Rozwiązaniem, które wymyśliłem, aby rozwiązać położenie krzyżówki każdego słowa, jest:

crossword(V1, V2, V3, H1, H2, H3) :-
   word(V1, V1a, V1bH1b, V1c, V1dH2b, V1e, V1fH3b, V1g), 
   word(V2, V2a, V2bH1d, V2c, V2dH2d, V2e, V2fH3d, V2g), 
   word(V3, V3a, V3bH1f, V3c, V3dH2f, V3e, V3fH3f, V3g), 
   word(H1, H1a, V1bH1b, H1c, V2bH1d, H1e, V3bH1f, H1g), 
   word(H2, H2a, V1dH2b, H2c, V2dH2d, H2e, V3dH2f, H2g), 
   word(H3, H3a, V1fH3b, H3c, V2fH3d, H3e, V3fH3f, H3g).

ZV1a doV1g itd. będące znakami każdego słowa iV1bH1b doV3fH3f będące znakami wspólnymi dla słów w krzyżówce.

Rozwiązanie wydaje się działać, jednak wynik generuje zduplikowane wartości, przy czym pierwszym wynikiem jest:

?- crossword(V1, V2, V3, H1, H2, H3).
V1 = astante,
V2 = baratto,
V3 = statale,
H1 = astante,
H2 = baratto,
H3 = statale .

Jak mogę zmusić Prologa do posiadaniaV1 \= V2 \= V3 \= H1 \= H2 \= H3 ? Jeśli zrobię je pojedynczo jeden po drugim, będę potrzebował 120 permutacji, więc musi być szybszy sposób i jest to ćwiczenie dla początkujących, więc czegoś mi brakuje.

znalazłemto podobne pytanie, ale przedstawione odpowiedzi wydają się tak skomplikowane, mam nadzieję, że istnieje prostszy sposób. Używam swi-prologu w Ubuntu, na wszelki wypadek.

Dzięki.

questionAnswers(3)

yourAnswerToTheQuestion