#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;
if (k*(k+1)/2-(k-1) < n)
{
cout << -1;
return;
}
int l = 2, r = k, ans = -1;
while (l <= r)
{
int mid = (l+r)>>1;
if ([&](int)->bool
{
int have = k*(k+1)/2-1 - ((mid-1)*mid/2-1);
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+IG4gPj4gazsKICAgIGlmIChrKihrKzEpLzItKGstMSkgPCBuKQogICAgewogICAgICAgIGNvdXQgPDwgLTE7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IGwgPSAyLCByID0gaywgYW5zID0gLTE7CiAgICB3aGlsZSAobCA8PSByKQogICAgewogICAgICAgIGludCBtaWQgPSAobCtyKT4+MTsKICAgICAgICBpZiAoWyZdKGludCktPmJvb2wKICAgICAgICB7CiAgICAgICAgICAgIGludCBoYXZlID0gayooaysxKS8yLTEgLSAoKG1pZC0xKSptaWQvMi0xKTsKICAgICAgICAgICAgcmV0dXJuIGhhdmUgPj0gbjsKICAgICAgICB9KG1pZCkpCiAgICAgICAgewogICAgICAgICAgICBhbnMgPSBrLW1pZCsxOwogICAgICAgICAgICBsID0gbWlkICsgMTsKICAgICAgICB9ZWxzZQogICAgICAgICAgICByID0gbWlkIC0gMTsKICAgIH0KICAgIGNvdXQgPDwgYW5zOwp9CgppbnQzMl90IG1haW4oKQp7CiAgICAvLyAjaWZuZGVmIE9OTElORV9KVURHRQogICAgLy8gICAgIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwogICAgLy8gICAgIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiAgICAvLyAgICAgZnJlb3BlbigiRXJyb3JzLnR4dCIsICJ3Iiwgc3RkZXJyKTsKICAgIC8vICNlbmRpZgogICAgZmFzdAogICAgaW50IHQgPSAxOwogICAgLy8gY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKQogICAgewogICAgICAgIHNvbHZlKCk7CiAgICAgICAgaWYgKHQpIGNvdXQgPDwgJ1xuJzsKICAgIH0KICAgIGNvdXQgPDwgJ1xuJzsKICAgIHJldHVybiAwOwp9