:- use_module(library(fd)).

smm(S,E,N,D,M,O,R,Y) :-
        [S,E,N,D,M,O,R,Y] :: [0..9],
        constrain([S,E,N,D,M,O,R,Y]),
        labeling([S,E,N,D,M,O,R,Y]).

constrain([S,E,N,D,M,O,R,Y]) :-
        S #\=  0, M #\= 0,
        alldifferent([S,E,N,D,M,O,R,Y]),
                        1000*S  + 100 * E       + 10 * N        + D
        +               1000*M  + 100 * O       + 10 * R        + E
        #= 10000 * M +  1000*O  + 100 * N       + 10 * E        + Y.