#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define int long long int
#define ld long double
#define all(x) x.begin(), x.end()
#define sortall(x) sort(all(x))
#define endl '\n'
#define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
template<class T>
void printC (T Collection)
{
for (auto&i:Collection)
cout << i << " \n";
cout << '\n';
}
/*
* Think twice, code once
* Think of different approaches to tackle a problem: write them down.
* Think of different views of the problem. don't look from only one side.
* don't get stuck in one approach.
* common mistakes: - over_flow
* - out_of_bound index
* - infinite loop
* - corner cases
* - duplication counting.
*/
void solve()
{
int n, k; cin >> n >> k;
int l = 2, r = k, ans = -1;
if (n == 1)
{
cout << 0;
return;
}
while (l <= r)
{
int mid = (l+r)>>1;
if ([&](int)->bool
{
int have = k*(k+1)/2 - (mid-1)*mid/2 - (k-mid);
return have >= n;
}(mid))
{
ans = k-mid+1;
l = mid + 1;
}else
r = mid - 1;
}
cout << ans;
}
int32_t main()
{
// #ifndef ONLINE_JUDGE
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
// freopen("Errors.txt", "w", stderr);
// #endif
fast
int t = 1;
// cin >> t;
while (t--)
{
solve();
if (t) cout << '\n';
}
cout << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgaW50IGxvbmcgbG9uZyBpbnQKI2RlZmluZSBsZCBsb25nIGRvdWJsZQojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCksIHguZW5kKCkKI2RlZmluZSBzb3J0YWxsKHgpIHNvcnQoYWxsKHgpKQojZGVmaW5lIGVuZGwgJ1xuJwojZGVmaW5lIGZhc3QgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTtjaW4udGllKDApO2NvdXQudGllKDApOwp0ZW1wbGF0ZTxjbGFzcyBUPgp2b2lkIHByaW50QyAoVCBDb2xsZWN0aW9uKQp7CiAgICBmb3IgKGF1dG8maTpDb2xsZWN0aW9uKQogICAgICAgIGNvdXQgPDwgaSA8PCAiIFxuIjsKICAgIGNvdXQgPDwgJ1xuJzsKfQoKLyoKICogVGhpbmsgdHdpY2UsIGNvZGUgb25jZQogKiBUaGluayBvZiBkaWZmZXJlbnQgYXBwcm9hY2hlcyB0byB0YWNrbGUgYSBwcm9ibGVtOiB3cml0ZSB0aGVtIGRvd24uCiAqIFRoaW5rIG9mIGRpZmZlcmVudCB2aWV3cyBvZiB0aGUgcHJvYmxlbS4gZG9uJ3QgbG9vayBmcm9tIG9ubHkgb25lIHNpZGUuCiAqIGRvbid0IGdldCBzdHVjayBpbiBvbmUgYXBwcm9hY2guCiAqIGNvbW1vbiBtaXN0YWtlczogLSBvdmVyX2Zsb3cKICogICAgICAgICAgICAgICAgICAtIG91dF9vZl9ib3VuZCBpbmRleAogKiAgICAgICAgICAgICAgICAgIC0gaW5maW5pdGUgbG9vcAogKiAgICAgICAgICAgICAgICAgIC0gY29ybmVyIGNhc2VzCiAqICAgICAgICAgICAgICAgICAgLSBkdXBsaWNhdGlvbiBjb3VudGluZy4KKi8KCnZvaWQgc29sdmUoKQp7CiAgICBpbnQgbiwgazsgY2luID4+IG4gPj4gazsKICAgIGludCBsID0gMiwgciA9IGssIGFucyA9IC0xOwogICAgaWYgKG4gPT0gMSkKICAgIHsKICAgICAgICBjb3V0IDw8IDA7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgd2hpbGUgKGwgPD0gcikKICAgIHsKICAgICAgICBpbnQgbWlkID0gKGwrcik+PjE7CiAgICAgICAgaWYgKFsmXShpbnQpLT5ib29sCiAgICAgICAgewogICAgICAgICAgICBpbnQgaGF2ZSA9IGsqKGsrMSkvMiAtIChtaWQtMSkqbWlkLzIgLSAoay1taWQpOwogICAgICAgICAgICByZXR1cm4gaGF2ZSA+PSBuOwogICAgICAgIH0obWlkKSkKICAgICAgICB7CiAgICAgICAgICAgIGFucyA9IGstbWlkKzE7CiAgICAgICAgICAgIGwgPSBtaWQgKyAxOwogICAgICAgIH1lbHNlCiAgICAgICAgICAgIHIgPSBtaWQgLSAxOwogICAgfQogICAgY291dCA8PCBhbnM7Cn0KCmludDMyX3QgbWFpbigpCnsKICAgIC8vICNpZm5kZWYgT05MSU5FX0pVREdFCiAgICAvLyAgICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7CiAgICAvLyAgICAgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIC8vICAgICBmcmVvcGVuKCJFcnJvcnMudHh0IiwgInciLCBzdGRlcnIpOwogICAgLy8gI2VuZGlmCiAgICBmYXN0CiAgICBpbnQgdCA9IDE7CiAgICAvLyBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pCiAgICB7CiAgICAgICAgc29sdmUoKTsKICAgICAgICBpZiAodCkgY291dCA8PCAnXG4nOwogICAgfQogICAgY291dCA8PCAnXG4nOwogICAgcmV0dXJuIDA7Cn0=