#include<iostream>
#include<queue>
#define endl "\n"
#define MAX 2000
using namespace std;
queue<pair<pair<int, int>, int> > Q;
int S;
bool Visit[MAX][MAX];
void Input()
{
cin >> S;
}
int BFS()
{
Q.push(make_pair(make_pair(1, 0), 0));
Visit[1][0] = true; // 화면, 클립보드
while (Q.empty() == 0)
{
int Dis = Q.front().first.first;
int Clip = Q.front().first.second;
int Time = Q.front().second;
Q.pop();
if (Dis == S) return Time;
if (Dis > 0 && Dis < MAX)
{
//1번 & 3번 조건
if (Visit[Dis][Dis] == false)
{
Visit[Dis][Dis] = true;
Q.push(make_pair(make_pair(Dis, Dis), Time + 1));
}
if (Visit[Dis - 1][Clip] == false)
{
Visit[Dis - 1][Clip] = true;
Q.push(make_pair(make_pair(Dis - 1, Clip), Time + 1));
}
}
if (Clip > 0 && Dis + Clip < MAX)
{
if (Visit[Dis + Clip][Clip] == false)
{
Visit[Dis + Clip][Clip] = true;
Q.push(make_pair(make_pair(Dis + Clip, Clip), Time + 1));
}
}
}
}
void Solution()
{
int R = BFS();
cout << R << endl;
}
void Solve()
{
Input();
Solution();
}
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
//freopen("Input.txt", "r", stdin);
Solve();
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHF1ZXVlPgoKI2RlZmluZSBlbmRsICJcbiIKI2RlZmluZSBNQVggMjAwMAp1c2luZyBuYW1lc3BhY2Ugc3RkOwpxdWV1ZTxwYWlyPHBhaXI8aW50LCBpbnQ+LCBpbnQ+ID4gUTsKaW50IFM7CmJvb2wgVmlzaXRbTUFYXVtNQVhdOwoKdm9pZCBJbnB1dCgpCnsKICAgIGNpbiA+PiBTOwp9CgppbnQgQkZTKCkKewogICAKICAgIFEucHVzaChtYWtlX3BhaXIobWFrZV9wYWlyKDEsIDApLCAwKSk7CiAgICBWaXNpdFsxXVswXSA9IHRydWU7ICAgIC8vIO2ZlOuptCwg7YG066a967O065OcCgogICAgd2hpbGUgKFEuZW1wdHkoKSA9PSAwKQogICAgewogICAgICAgIGludCBEaXMgPSBRLmZyb250KCkuZmlyc3QuZmlyc3Q7CiAgICAgICAgaW50IENsaXAgPSBRLmZyb250KCkuZmlyc3Quc2Vjb25kOwogICAgICAgIGludCBUaW1lID0gUS5mcm9udCgpLnNlY29uZDsKICAgICAgICBRLnBvcCgpOwoKICAgICAgICBpZiAoRGlzID09IFMpIHJldHVybiBUaW1lOwoKICAgICAgICBpZiAoRGlzID4gMCAmJiBEaXMgPCBNQVgpCiAgICAgICAgewogICAgICAgICAgICAvLzHrsoggJiAz67KIIOyhsOqxtAogICAgICAgICAgICBpZiAoVmlzaXRbRGlzXVtEaXNdID09IGZhbHNlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWaXNpdFtEaXNdW0Rpc10gPSB0cnVlOwogICAgICAgICAgICAgICAgUS5wdXNoKG1ha2VfcGFpcihtYWtlX3BhaXIoRGlzLCBEaXMpLCBUaW1lICsgMSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoVmlzaXRbRGlzIC0gMV1bQ2xpcF0gPT0gZmFsc2UpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZpc2l0W0RpcyAtIDFdW0NsaXBdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIFEucHVzaChtYWtlX3BhaXIobWFrZV9wYWlyKERpcyAtIDEsIENsaXApLCBUaW1lICsgMSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoQ2xpcCA+IDAgJiYgRGlzICsgQ2xpcCA8IE1BWCkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChWaXNpdFtEaXMgKyBDbGlwXVtDbGlwXSA9PSBmYWxzZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmlzaXRbRGlzICsgQ2xpcF1bQ2xpcF0gPSB0cnVlOwogICAgICAgICAgICAgICAgUS5wdXNoKG1ha2VfcGFpcihtYWtlX3BhaXIoRGlzICsgQ2xpcCwgQ2xpcCksIFRpbWUgKyAxKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCgp2b2lkIFNvbHV0aW9uKCkKewogICAgaW50IFIgPSBCRlMoKTsKICAgIGNvdXQgPDwgUiA8PCBlbmRsOwp9Cgp2b2lkIFNvbHZlKCkKewogICAgSW5wdXQoKTsKICAgIFNvbHV0aW9uKCk7Cn0KCmludCBtYWluKHZvaWQpCnsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiAgICBjb3V0LnRpZShOVUxMKTsKCiAgICAvL2ZyZW9wZW4oIklucHV0LnR4dCIsICJyIiwgc3RkaW4pOwogICAgU29sdmUoKTsKCiAgICByZXR1cm4gMDsKfQo=