long long Comb(long long n,long long r) { long long ans; if(n<r) return 0; if(s[n][r]!=0) return s[n][r]; ans=(Comb(n-1,r)+Comb(n-1,r-1))%mod; s[n][r]=ans; return ans; }
int solve(){ int sl = strlen(str); int i,j; int ret=0; for(i=1;i<sl;i++) if(str[i-1]>=str[i]) return 0; for(i=0;i<sl;i++) ret += Comb(26,i); for(i=0;i<sl;i++){ j=str[i]-'a'; for(j--;j>=(i==0?0:str[i-1]-'a'+1);j--) ret += Comb(25-j,sl-i-1); } return ret; }
void Comb(int n, int k, int start, vector<int> &solution) { if (k == 0) { res.push_back(solution); return; } for (int i = start; i <= n; i++) { solution.push_back(i); Comb(n, k - 1, i + 1, solution); solution.pop_back(); } }
int main() { long long n,i,r; scanf("%lld %lld", &n, &r); if(n<r) printf("-1\n"); else if((n==r)||(r==1)) printf("1\n"); else { for(i=0;i<n;i++) s[i][1]=i; printf("%lld\n",Comb(n-1,r-1)); } return 0; }
int Comb(int n,int k){ if(k<0||k>n)return 0; if(k==0||k==n)return 1; if(C[n][k]>=0) return C[n][k]; return (C[n][k]=Comb(n-1,k-1)+Comb(n-1,k)); }
vector<vector<int>> combine(int n, int k) { vector<int> solution; Comb(n, k, 1, solution); return res; }