#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9 + 7;
const double eps = 1e-8;
inline int sgn(const double x) { return (x > eps) - (x < -eps); }
template <class T>
T _abs(T x) {
  if (x < 0) x = -x;
  return x;
}
template <class T>
bool get_max(T &a, const T b) {
  return a < b ? a = b, true : false;
}
template <class T>
bool get_min(T &a, const T b) {
  return a > b ? a = b, true : false;
}
template <class T>
void _swap(T &a, T &b) {
  T t = a;
  a = b;
  b = t;
}
int main() {
  long long a, b;
  while (cin >> a >> b) {
    long long ans = 1;
    while (a != b) {
      if (a > b) {
        if (a % b) {
          ans += a / b;
          a = a % b;
        } else {
          ans += a / b - 1;
          a = b;
        }
      } else {
        if (b % a) {
          ans += b / a;
          b = b % a;
        } else {
          ans += b / a - 1;
          b = a;
        }
      }
    }
    cout << ans << endl;
  }
  return 0;
}
