#include <bits/stdc++.h>
typedef long long ll;
#define rep(i, n) for(int i=0, i##_len=(n); i<i##_len; ++i)
#define ALL(v) v.begin(), v.end()
#define pb push_back
#define INF 1e9
#define MOD 1000000007
using namespace std;

int getInt(char c){
    return (int)(c-'0');
}

int main()
{
    int n;
    string s;
    cin>>n;
    cin>>s;

    int begin[10];
    int end[10];
    rep(i,10){
        begin[i]=-1;
        end[i]=-1;
    }
    
    rep(i,n){
        end[getInt(s[i])]=i;
    }
    for (int i = n-1; i >= 0; i--)
    {
        begin[getInt(s[i])]=i;
    }
    // rep(i,10){
    //     std::cout<<i<<" "<<begin[i]<<" "<<end[i]<<endl;
    // }

    int ans=0;
    for (int i = 0; i < 10; i++)
    {
        if(begin[i]==-1){
            continue;
        }
        int be=begin[i];
        for (int j = 0; j < 10; j++)
        {
            if(end[j]==-1){
                continue;
            }
            //cout<<i<<" "<<j<<endl;
            int en=end[j];
            bool isK[10];
            rep(k,10){
                isK[k]=false;
            }
            
            for (int k = be+1; k <= en-1; k++)
            {
                isK[getInt(s[k])]=true;
            }

            rep(k,10){
                if(isK[k]){
                    ans++;
                    //cout<<i<<" "<<k<<" "<<j<<endl;
                }
            }
        }
        
    }
    
    std::cout<<ans;

//     int cnt=0;
//     rep(num,1000){
//         int num_tmp = num;
//         int ak= (num_tmp % 10); num_tmp /= 10;
//         int aj = (num_tmp % 10); num_tmp /= 10;
//         int ai = (num_tmp % 10); num_tmp /= 10;
//         rep(i,n-2){
//             if(getInt(s[i])==ai){
//                 for (int j = i+1; j < n-1; j++)
//                 {
//                     if(getInt(s[j])==aj){
//                         for (int k = j+1; k < n; k++)
//                         {
//                             if(getInt(s[k])==ak){
//                                 cnt++;
//                                 goto end;
//                             }
//                         }
                        
//                     }
//                 }
                
//             }
//         }
// end:
//         ak=0;
//     }

//     std::cout<<cnt<<endl;


    //cout<<s<<endl;
    // vector<int> a[30001];
    // rep(i,n-1){
    //     bool isA[10];
    //     rep(j,10){
    //         isA[j]=false;
    //     }
    //     for (int j = i+1; j < n; j++)
    //     {
    //         isA[(int)(s[j]-'0')]=true;
    //     }
    //     int cnt=0;
    //     rep(j,10){
    //         if(isA[j]){
    //             a[i].push_back(j);
    //         }
    //     }
    //     // rep(j,a[i].size()){
    //     //     cout<<i<<" "<<a[i][j]<<endl;
    //     // }
    // }
    
    // set<int> seti;
    // rep(i,n-2){
    //     int in = (int)(s[i]-'0');
    //     for (int j = i+1; j < n-1; j++)
    //     {
    //         int jn = (int)(s[j]-'0');
    //         rep(k,a[j].size()){
    //             seti.insert(in*100+jn*10+a[j][k]);
    //         }
    //     }
    // }
    // for (int nakami : seti)
    // {
    //     cout<<nakami<<endl;
    // }
    
    //cout<<seti.size()<<endl;
    return 0;
}

Measured memory_bytes: 256