#include <iostream>
#include <map>
#include <algorithm>
#include <vector>
#include <functional>
#include <time.h>
bool check(std::string& t);
int main() {
clock_t begin=clock();
std::map<char,int> g;
std::string d("sendmory");
for(auto c: d)
g[c] = 0;
for(int i = 10000000; i <= 99999999; i++){
std::string temp = std::to_string(i);
if(check(temp)){
int j=0;
for(auto a: d){
g[a] = temp[j] -'0';
j++;
}
if(g[d[4]] && g[d[0]]){
int sl1,sl2,sl3;
sl1 = g[d[0]]*1000 + g[d[1]]*100 + g[d[2]]*10 + g[d[3]];
sl2 = g[d[4]]*1000 + g[d[5]]*100 + g[d[6]]*10 + g[d[1]];
sl3 = g[d[4]]*10000 + g[d[5]]*1000 + g[d[2]]*100 + g[d[1]]*10 + g[d[7]];
if(sl1+sl2 == sl3) {
for (auto c:g)
std::cout << c.first << " = " << c.second << "\n";
std::cout << sl3 <<"\n";
break;
}
}
}
}
clock_t end=clock();
std::cout << end - begin;
return 0;
}
bool check(std::string& t){
for(int i=0; i < t.size();i++){
for(int j = i+1; j <t.size();j++)
if(t[i]==t[j])
return false;
}
return true;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPHRpbWUuaD4KYm9vbCBjaGVjayhzdGQ6OnN0cmluZyYgdCk7CgppbnQgbWFpbigpIHsKICAgIGNsb2NrX3QgIGJlZ2luPWNsb2NrKCk7CiAgICBzdGQ6Om1hcDxjaGFyLGludD4gZzsKICAgIHN0ZDo6c3RyaW5nIGQoInNlbmRtb3J5Iik7CiAgICBmb3IoYXV0byBjOiBkKQogICAgICAgIGdbY10gPSAwOwogICAgZm9yKGludCBpID0gMTAwMDAwMDA7IGkgPD0gOTk5OTk5OTk7IGkrKyl7CiAgICAgICAgc3RkOjpzdHJpbmcgdGVtcCA9IHN0ZDo6dG9fc3RyaW5nKGkpOwogICAgICAgIGlmKGNoZWNrKHRlbXApKXsKICAgICAgICAgICAgaW50IGo9MDsKICAgICAgICAgICAgZm9yKGF1dG8gYTogZCl7CiAgICAgICAgICAgICAgICBnW2FdID0gdGVtcFtqXSAtJzAnOwogICAgICAgICAgICAgICAgaisrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKGdbZFs0XV0gJiYgZ1tkWzBdXSl7CiAgICAgICAgICAgICAgICBpbnQgc2wxLHNsMixzbDM7CiAgICAgICAgICAgICAgICBzbDEgPSBnW2RbMF1dKjEwMDAgKyBnW2RbMV1dKjEwMCArIGdbZFsyXV0qMTAgKyBnW2RbM11dOwogICAgICAgICAgICAgICAgc2wyID0gZ1tkWzRdXSoxMDAwICsgZ1tkWzVdXSoxMDAgKyBnW2RbNl1dKjEwICsgZ1tkWzFdXTsKICAgICAgICAgICAgICAgIHNsMyA9IGdbZFs0XV0qMTAwMDAgKyBnW2RbNV1dKjEwMDAgKyBnW2RbMl1dKjEwMCArIGdbZFsxXV0qMTAgKyBnW2RbN11dOwogICAgICAgICAgICAgICAgaWYoc2wxK3NsMiA9PSBzbDMpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8gYzpnKQogICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgYy5maXJzdCA8PCAiID0gIiA8PCBjLnNlY29uZCA8PCAiXG4iOwogICAgICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBzbDMgPDwiXG4iOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfQogICAgY2xvY2tfdCBlbmQ9Y2xvY2soKTsKICAgIHN0ZDo6Y291dCA8PCBlbmQgLSBiZWdpbjsKICAgIHJldHVybiAwOwp9Cgpib29sIGNoZWNrKHN0ZDo6c3RyaW5nJiB0KXsKICAgIGZvcihpbnQgaT0wOyBpIDwgdC5zaXplKCk7aSsrKXsKICAgICAgICBmb3IoaW50IGogPSBpKzE7IGogPHQuc2l6ZSgpO2orKykKICAgICAgICAgICAgaWYodFtpXT09dFtqXSkKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiB0cnVlOwp9