#include <bits/stdc++.h>
using namespace std;
long long a, b;
int p;
int tot, len;
int c[60];
long long dp[60][60][2];
long long calc(long long n, long long t) {
  if ((t & (-t)) != t) return 0;
  for (; t; t >>= 1) tot++;
  n++;
  for (; n;) {
    c[++len] = n & 1;
    n >>= 1;
  }
  for (int i = 1, j = len; i < j; i++, j--) swap(c[i], c[j]);
  dp[0][0][1] = 1;
  for (int i = 0; i < len; i++)
    for (int j = 0; j <= tot; j++) {
      dp[i + 1][j + 1][0] += dp[i][j][0];
      dp[i + 1][j][0] += dp[i][j][0];
      if (c[i + 1] == 1) {
        dp[i + 1][j + 1][1] += dp[i][j][1];
        dp[i + 1][j][0] += dp[i][j][1];
      } else
        dp[i + 1][j][1] += dp[i][j][1];
    }
  return dp[len][tot][0] + dp[len][tot][1] - (tot == 1);
}
int main() {
  cin >> a >> b;
  cout << calc(a, b) << endl;
}
