#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <cmath>
#include <numeric>
using namespace std;

int main(){
    bool end = false ;
    while (end == false)
    {
        int n,s ;
        cin >> n >> s ;
        if (n == 0 && s == 0)
        {
            //0 0が来たら終わり
            end = true ;
            break ;
        }
        int ans = 0;
        //明らかに0のパターンはサボる
        if (s < n*(n-1)/2 || s > 9*n - n*(n-1)/2)
        {
            cout << 0 << endl ;
            continue ;
        }
        //ビット操作的な何かで、iの1ビット目を0の有無、2ビット目を1の有無...
        //というように対応させていく

        for (size_t i = 0; i < 1024; i++)
        {
            int num = i ;
            vector<int> a(10,0) ;
            //0~9それぞれについて、選ばれているかを管理する配列
            //a.at(i)→iがあれば1,なければ0
            for (size_t j = 0; j < 10; j++)
            {
                a.at(j) = num % 2 ;
                num = num /2 ;
            }
            //配列内の数の和＝要素数
            int youso = std::accumulate(a.begin(),a.end(),0) ;
            //要素数が一致したら和が一致するか判定する
            if (youso == n)
            {
                int sum = 0 ;
                for (size_t j = 0; j < 10; j++)
                {
                    if (a.at(j)==1)
                    {
                        sum += j ;
                    }
                    
                }
                if (sum == s)
                {
                    ans ++ ;
                }
                
            }
             
        }
        
        cout << ans << endl ;
        
    }
    return 0 ;
}

