"""  Exercice 2.17 :    opérations cryptées
                        question 1 : SEND+MORE=MONEY   """
solutions=[]
for S in range(10) :
    for E in range(10)  :
        if E==S : continue
        for N in range(10)  :
            if N==E or N==S : continue
            for D in range(10)  :
                if D==N or D==E or D==S : continue
                for M in range(1,10)  :  # pour empêcher un chiffre M nul (avec range(10) il y a 25 solutions)
                    if M==D or M==N or M==E or M==S : continue
                    for O in range(10)  :
                        if O==M or O==D or O==N or O==E or O==S : continue
                        for R in range(10)  :
                            if R==O or R==M or R==D or R==N or R==E or R==S : continue
                            for Y in range(10)  :
                                if Y==R or Y==O or Y==M or Y==D or Y==N or Y==E or Y==S : continue
                                if (S+M-O)*10**3+(E+O-N)*10**2+(N+R-E)*10+(D+E-Y)-M*10**4==0 :
                                    solutions.append(str(S*10**3+E*10**2+N*10+D)+'+'+str(M*10**3+O*10**2+R*10+E)+\
                                                     '='+str(M*10**4+O*10**3+N*10**2+E*10+Y))
if len(solutions)==0 :
    print("Ce problème n'a pas de solution.")
elif len(solutions)==1 :
    print("C'est un bon problème qui n'a qu'une solution : "+solutions[0])
else :
    print("Il y a {} solutions : ".format(len(solutions)))
    for i in range(len(solutions)):
        print("Solution n°{} : {}".format(i+1,solutions[i]))


    





