#include <iostream>
using namespace std;
struct Node
{
int value;
Node *next;
};
int find(Node* head, int n) {
if (!head) {
return -1;
}
if (head->value == n) {
return 0;
}
int result = find(head->next, n);
return (result == -1) ? result : 1 + result;
}
int main()
{
Node *list = new Node{1, new Node{2, new Node{3, nullptr}}};
cout << find(list, 1) << endl;
cout << find(list, 2) << endl;
cout << find(list, 3) << endl;
cout << find(list, 4) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IE5vZGUKewoJaW50IHZhbHVlOwoJTm9kZSAqbmV4dDsKfTsKCmludCBmaW5kKE5vZGUqIGhlYWQsIGludCBuKSB7CiAgICBpZiAoIWhlYWQpIHsKICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgaWYgKGhlYWQtPnZhbHVlID09IG4pIHsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBpbnQgcmVzdWx0ID0gZmluZChoZWFkLT5uZXh0LCBuKTsKICAgIHJldHVybiAocmVzdWx0ID09IC0xKSA/IHJlc3VsdCA6IDEgICsgcmVzdWx0Owp9CgoKaW50IG1haW4oKQp7CglOb2RlICpsaXN0ID0gbmV3IE5vZGV7MSwgbmV3IE5vZGV7MiwgbmV3IE5vZGV7MywgbnVsbHB0cn19fTsKCgljb3V0IDw8IGZpbmQobGlzdCwgMSkgPDwgZW5kbDsKCWNvdXQgPDwgZmluZChsaXN0LCAyKSA8PCBlbmRsOwoJY291dCA8PCBmaW5kKGxpc3QsIDMpIDw8IGVuZGw7Cgljb3V0IDw8IGZpbmQobGlzdCwgNCkgPDwgZW5kbDsKCglyZXR1cm4gMDsKfQ==