#include <bits/stdc++.h>
using namespace std;
struct _IO {
  _IO() {
    ios::sync_with_stdio(0);
    cin.tie(0);
  }
} _io;
const int N = 5e3 + 5, M = 1e9 + 7;
long long f(long long b, long long n) {
  if (b > n) return n;
  return f(b, n / b) + n % b;
}
int main() {
  long long n, m;
  cin >> n >> m;
  for (int i = 2; (long long)i * i <= n; i++) {
    if (f(i, n) == m) {
      cout << i;
      return 0;
    }
  }
  if (n > m) {
    n -= m;
    for (int i = n / (sqrt(n + m) + 1) + 1; i >= 1; i--) {
      if (n % i == 0) {
        long long b = n / i + 1;
        if (b > i && b > m - i && m - i >= 0) {
          cout << b;
          return 0;
        }
      }
    }
  }
  if (n == m)
    cout << n + 1;
  else
    cout << -1;
}
