/*
 * Automatically-generated program to solve the following cryptarithm:
 *      send + more = money
 */
#include <stdio.h>
#include <stdlib.h>
#define M 8
int tuple[10];
int Used[10] = {0,0,0,0,0,0,0,0,0,0};
void perm(int*, int);
int match();
void print();
main () {
   perm (Used, M);
}
void perm (int Used[10], int Size) {
int i;
if (Size == 1) {
   for (i=0; i<10; i++)
      if (!Used[i]) {
         tuple[M-Size] = i;
         if (match()) print();
         }
   }
else {
   for (i=0; i<10; i++) {
      if (!Used[i]) {
         Used[i] = 1;
         tuple[M-Size] = i;
         perm (Used, Size-1);
         Used[i] = 0;
         }
      }
   }
}
int match () {
return !(         1*(tuple[3]+tuple[1]-tuple[7])+
                 10*(tuple[2]+tuple[6]-tuple[1])+
                100*(tuple[1]+tuple[5]-tuple[2])+
               1000*(tuple[0]+tuple[4]-tuple[5])+
              10000*(                 -tuple[4]));
}
void print () {
printf ("%d%d%d%d + %d%d%d%d = %d%d%d%d%d\n",
        tuple[0], tuple[1], tuple[2], tuple[3], 
        tuple[4], tuple[5], tuple[6], tuple[1], 
        tuple[4], tuple[5], tuple[2], tuple[1], tuple[7]);
return;
}
