#include <bits/stdc++.h>
using namespace std;
void err() { std::cout << std::endl; }
template <typename T, typename... Args>
void err(T a, Args... args) {
  std::cout << a << ' ';
  err(args...);
}
template <template <typename...> class T, typename t, typename... A>
void err(const T<t> &arg, const A &...args) {
  for (auto &v : arg) std::cout << v << ' ';
  err(args...);
}
const long long mod = 1000000007;
const int INF = 0x3f3f3f3f;
const double PI = acos(-1.0);
long long powmod(long long a, long long b) {
  long long res = 1;
  a %= mod;
  assert(b >= 0);
  for (; b; b >>= 1) {
    if (b & 1) res = res * a % mod;
    a = a * a % mod;
  }
  return res;
}
const int N = 1e5 + 10;
long long get(long long a, long long b) {
  long long res = 0;
  if (a >= b) {
    res += a / b;
    a %= b;
  }
  if (!a) return res;
  if (b - a == 1)
    res += a + 1;
  else {
    res += get(b - a, a) + 1;
  }
  return res;
}
int main() {
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(0);
  std::cout.tie(0);
  long long a, b;
  cin >> a >> b;
  long long ans = get(a, b);
  cout << ans << '\n';
  return 0;
}
