#!/usr/bin/python

from __future__ import generators

def xcombinations(items, n):
    if n==0:
        yield []
    else:
        for i in xrange(len(items)):
            for cc in xcombinations(items[:i]+items[i+1:],n-1):
                yield [items[i]]+cc

diners={}
diners['andy']='bobo'
diners['bobo']='andy'
diners['jon']='emma'
diners['emma']='jon'
diners['ben']='robyn'
diners['robyn']='ben'
diners['richard']='belinda'
diners['belinda']='richard'
names=diners.keys()
count=0

for perm in xcombinations(names, 8):
    valid=1
    for index in range(7):
        if perm[index+1]==diners[perm[index]]:
	    valid=0
        if index<6 and perm[index+2]==diners[perm[index]]:
            valid=0
    if valid==1:
        count+=1
	print perm
print "Matched %d possible combinations" % count
