output_description: If there exists an integer b (b \geq 2) such that f(b,n)=s, print the smallest
  such b. If such b does not exist, print `-1` instead.
  
  * * *
input_description: The input is given from Standard Input in the following format:
  
      
      
      n
      s
attempt: def f(b, n):
      return n if n<b else f(b,n//b)+(n%b)
  
  n = int(input())
  s = int(input())
  l = []
  
  if n == 1:
      print(-1)
      exit()
  else if s == 1:
      print(n)
      exit()
  else if n == s:
      print(1)
      exit()
  
  for i in range(1,11):
      l.append(f(10**i,n))
  # print(l)
  lf,ri = 0,0
  for i in range(9):
      if l[i] <= s < l[i+1]:
          lf = 10**(i+1)
          ri = 10**(i+2)
  else:
      lf = 2
      ri = 10
  
  # print(lf,ri)
  
  for b in range(lf, ri+1):
      if(f(b,n)==s):
          print(b)
          break
  else:
      print(-1)
  
problem_description: Statement
  
  For integers b (b \geq 2) and n (n \geq 1), let the function f(b,n) be defined
  as follows:
  
    * f(b,n) = n, when n < b
    * f(b,n) = f(b,\,{\rm floor}(n / b)) + (n \ {\rm mod} \ b), when n \geq b
  
  Here, {\rm floor}(n / b) denotes the largest integer not exceeding n / b, and
  n \ {\rm mod} \ b denotes the remainder of n divided by b.
  
  Less formally, f(b,n) is equal to the sum of the digits of n written in base
  b. For example, the following hold:
  
    * f(10,\,87654)=8+7+6+5+4=30
    * f(100,\,87654)=8+76+54=138
  
  You are given integers n and s. Determine if there exists an integer b (b \geq
  2) such that f(b,n)=s. If the answer is positive, also find the smallest such
  b.
samples: [{"input": "87654\n    30", "output": "10\n    \n\n* * *"}, {"input": "87654\n    138", "output": "100\n    \n\n* * *"}, {"input": "87654\n    45678", "output": "-1\n    \n\n* * *"}, {"input": "31415926535\n    1", "output": "31415926535\n    \n\n* * *"}, {"input": "1\n    31415926535", "output": "-1"}]