#include <iostream>
using namespace std;
pair<int, int> check(int value, int guess) {
pair<int, int> r{0, 0};
int vd[10] = {0}, gd[10] = {0};
while (value || guess) {
int dv = value % 10, dg = guess % 10;
if (dv == dg) {
r.first++;
r.second++;
}
else {
vd[dv]++;
gd[dg]++;
}
value /= 10;
guess /= 10;
}
for (int i = 0; i < 10; ++i)
if (vd[i]) {
if (gd[i]) r.second += min(vd[i], gd[i]);
}
return r;
}
int main() {
auto s = check(761, 777);
cout << "777 vs 761: ok: " << s.second << " in place: " << s.first <<
endl;
s = check(767, 776);
cout << "776 vs 767: ok: " << s.second << " in place: " << s.first <<
endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgpwYWlyPGludCwgaW50PiBjaGVjayhpbnQgdmFsdWUsIGludCBndWVzcykgewogICAgcGFpcjxpbnQsIGludD4gcnswLCAwfTsKICAgIGludCB2ZFsxMF0gPSB7MH0sIGdkWzEwXSA9IHswfTsKCiAgICB3aGlsZSAodmFsdWUgfHwgZ3Vlc3MpIHsKICAgICAgICBpbnQgZHYgPSB2YWx1ZSAlIDEwLCBkZyA9IGd1ZXNzICUgMTA7CgogICAgICAgIGlmIChkdiA9PSBkZykgewogICAgICAgICAgICByLmZpcnN0Kys7CiAgICAgICAgICAgIHIuc2Vjb25kKys7CiAgICAgICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmRbZHZdKys7CiAgICAgICAgICAgIGdkW2RnXSsrOwogICAgICAgICAgICB9CgogICAgICAgIHZhbHVlIC89IDEwOwogICAgICAgIGd1ZXNzIC89IDEwOwogICAgICAgIH0KCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpCiAgICAgICAgaWYgKHZkW2ldKSB7CiAgICAgICAgICAgIGlmIChnZFtpXSkgci5zZWNvbmQgKz0gbWluKHZkW2ldLCBnZFtpXSk7CiAgICAgICAgICAgIH0KCiAgICByZXR1cm4gcjsKICAgIH0KCmludCBtYWluKCkgewogICAgYXV0byBzID0gY2hlY2soNzYxLCA3NzcpOwogICAgY291dCA8PCAiNzc3IHZzIDc2MTogb2s6ICIgPDwgcy5zZWNvbmQgPDwgIiAgaW4gcGxhY2U6ICIgPDwgcy5maXJzdCA8PAogICAgICAgICBlbmRsOwogICAgcyA9IGNoZWNrKDc2NywgNzc2KTsKICAgIGNvdXQgPDwgIjc3NiB2cyA3Njc6IG9rOiAiIDw8IHMuc2Vjb25kIDw8ICIgIGluIHBsYWNlOiAiIDw8IHMuZmlyc3QgPDwKICAgICAgICAgZW5kbDsKICAgIH0KCg==