// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;

#ifdef ENABLE_DEBUG_OUTPUT

#define DEBUG_LOG(s) cout << s << endl;

#else

#define DEBUG_LOG(s) void();

#endif



int dp_solve(const int n, const string& s){

    //x : s.size()

    //y : use cnt

    //z ; lucky number

    // bool dp[n+1][4][1000] = { };

    // vector<vector<vector<bool>>> dp(n + 1, vector<vector<bool>>(4, vector<bool>(1000, false)));

    vector<vector<bool>> dp(4, vector<bool>(1000, false));

    // dp[0][0][0] = true;

    dp[0][0] = true;

    for (auto i = 0; i < n; i++) {

        for (auto j = 2; j >= 0; j--) {

            for (auto k = 0; k <= 999; k++) {

                int index = k * 10 + (s[i] - '0');

//                cout << dp[i][j][k] << " -> " << dp[i + 1][j][k] << endl;

                // dp[i + 1][j][k] = dp[i][j][k] or dp[i + 1][j][k];

                if(index <= 999) {

//                    if(dp[j + 1][index] or dp[j][k])

//                        cout << i << " " << j << " " << k << " " << index << endl;

                    // cout << dp[j][k] << " -> " << dp[j + 1][index] << endl;

                    // dp[i + 1][j + 1][index] = dp[i][j][k] or dp[i + 1][j + 1][index];

                    dp[j + 1][index] = dp[j][k] or dp[j + 1][index];

                }

            }

        }

    }



//    // for (auto i = 0; i <= n; i++) {

//        for (auto j = 0; j <= 3; j++) {

//            for (auto k = 0; k <= 30; k++) {

//                cout << dp[j][k] << " ";

//            }

//            cout << endl;

//        }

//    //     cout << endl;

//    // }



    int cnt = 0;

    for (auto i = 0; i <= 999; i++) if(dp[3][i]) cnt++;



    return cnt;

}



int main(){

    int n; string s;

    cin >> n >> s;



//    int ans = 0;

//    for (auto i = 0; i <= 999; i++) {

//        vector<int> number(3);

//        int tmp = i;

//        for (auto j = 0; j < 3; j++) {

//            number[j] = tmp % 10;

//            tmp /= 10;

//        }

//        int cnt = 0;

//        for (auto k = 0; k < (int)s.size(); k++) {

//            if(s[k] - '0' == number[cnt]) cnt++;

//            if(cnt == 3) {

//                ans++;

//                break;

//            }

//        }

//    }

//

//    cout << ans << endl;



    cout << dp_solve(n, s) << endl;

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 1.0995112536438585x):
#include <bits/stdc++.h>

using namespace std;

#ifdef ENABLE_DEBUG_OUTPUT

#define DEBUG_LOG(s) cout << s << endl;

#else

#define DEBUG_LOG(s) void();

#endif



int dp_solve(const int n, const string& s){

    //x : s.size()

    //y : use cnt

    //z ; lucky number

    // vector<vector<vector<bool>>> dp(n + 1, vector<vector<bool>>(4, vector<bool>(1000, false)));

    vector<vector<bool>> dp(4, vector<bool>(1000, false));

    // dp[0][0][0] = true;

    dp[0][0] = true;

    for (auto i = 0; i < n; i++) {

        for (auto j = 2; j >= 0; j--) {

            for (auto k = 0; k <= 99; k++) {

                int index = k * 10 + (s[i] - '0');

                // dp[i + 1][j][k] = dp[i][j][k] or dp[i + 1][j][k];

                //if(index <= 999) {

//                    if(dp[j + 1][index] or dp[j][k])

//                        cout << i << " " << j << " " << k << " " << index << endl;

                    // dp[i + 1][j + 1][index] = dp[i][j][k] or dp[i + 1][j + 1][index];

                    dp[j + 1][index] = dp[j][k] or dp[j + 1][index];

                //}

            }

        }

    }



//    // for (auto i = 0; i <= n; i++) {

//        for (auto j = 0; j <= 3; j++) {

//            for (auto k = 0; k <= 30; k++) {

//                cout << dp[j][k] << " ";

//            }

//            cout << endl;

//        }

//    //     cout << endl;

//    // }



    int cnt = 0;

    for (auto i = 0; i <= 999; i++) if(dp[3][i]) cnt++;



    return cnt;

}



int main(){

    int n; string s;

    cin >> n >> s;



//    int ans = 0;

//    for (auto i = 0; i <= 999; i++) {

//        vector<int> number(3);

//        int tmp = i;

//        for (auto j = 0; j < 3; j++) {

//            number[j] = tmp % 10;

//            tmp /= 10;

//        }

//        int cnt = 0;

//        for (auto k = 0; k < (int)s.size(); k++) {

//            if(s[k] - '0' == number[cnt]) cnt++;

//            if(cnt == 3) {

//                ans++;

//                break;

//            }

//        }

//    }

//

//    cout << ans << endl;



    cout << dp_solve(n, s) << endl;

    return 0;

}