#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline T POW(T B, T P) {
  if (P == 0) return 1;
  if (P & 1)
    return B * POW(B, P - 1);
  else
    return (POW(B, P / 2)) * (POW(B, P / 2));
}
long long int Bigmod(long long int base, long long int power,
                     long long int mod) {
  if (power == 0) return 1 % mod;
  if (power == 1) return base % mod;
  long long int x = Bigmod(base, power / 2, mod);
  x = (x * x) % mod;
  if (power % 2) {
    x = (x * (base % mod)) % mod;
  }
  return x;
}
long long int Mulmod(long long int base, long long int power,
                     long long int mod) {
  if (power == 0) return 0;
  if (power == 1) return base % mod;
  long long int x = Mulmod(base, power / 2, mod);
  x = (x + x) % mod;
  if (power % 2) {
    x = (x + (base % mod)) % mod;
  }
  return x;
}
bool isVowel(char ch) {
  ch = toupper(ch);
  if (ch == 'A' || ch == 'U' || ch == 'I' || ch == 'O' || ch == 'E')
    return true;
  return false;
}
long long int ModInverse(long long int number, long long int mod) {
  return Bigmod(number, mod - 2, mod);
}
bool isConso(char ch) {
  if (isalpha(ch) && !isVowel(ch)) return true;
  return false;
}
int toInt(string s) {
  int sm;
  stringstream second(s);
  second >> sm;
  return sm;
}
bool isPrime(long long int val) {
  if (val == 2) return true;
  if (val % 2 == 0 || val == 1) return false;
  long long int sqrt_N = (long long int)((double)sqrt(val));
  for (long long int i = 3; i <= sqrt_N; i += 2) {
    if (val % i == 0) return false;
  }
  return true;
}
template <class T>
string convert(T _input) {
  stringstream blah;
  blah << _input;
  return blah.str();
}
bool cmp(int a, int b) { return a > b; }
int main() {
  long long int n, k;
  scanf("%lld", &(n));
  scanf("%lld", &(k));
  long long int ans = (long long int)ceil((long double)(k) / n);
  printf("%lld\n", ans);
  return 0;
}
