local function comp(a, b)
  return a < b
end

local function lower_bound(ary, x)
  local num = #ary
  if num == 0 then return 1 end
  if not comp(ary[1], x) then return 1 end
  if comp(ary[num], x) then return num + 1 end
  local min, max = 1, num
  while 1 < max - min do
    local mid = (min + max) // 2
    if comp(ary[mid], x) then
      min = mid
    else
      max = mid
    end
  end
  return max
end


local n = io.read("*n", "*l")
local s = io.read()
local t = {}
for i = 1, 10 do
  t[i] = {}
end
for i = 1, n do
  local v = s:sub(i, i):byte() - 48
  if v == 0 then v = 10 end
  table.insert(t[v], i)
end
local ret = 0
for i = 1, 10 do
  local lb1 = lower_bound(t[i], 1)
  if lb1 <= #t[i] then
    local p1 = t[i][lb1]
    for j = 1, 10 do
      local lb2 = lower_bound(t[j], p1 + 1)
      if lb2 <= #t[j] then
        local p2 = t[j][lb2]
        for k = 1, 10 do
          local lb3 = lower_bound(t[k], p2 + 1)
          if lb3 <= #t[k] then
            ret = ret + 1
          end
        end
      end
    end
  end
end
print(ret)
