local read = setmetatable({}, {__index = function(t, k) local a = {} for i=1,#k do table.insert(a, '*'..string.sub(k, i, i)) end local r = io.read local u = table.unpack or unpack return function() return r(u(a)) end end})
read.N = function(N) local t={} for i=1,N do t[i]=read.n() end return t end
string.totable = function(s) local t={} local u=string.sub for i=1,#s do t[i] = u(s, i, i) end return t end
string.split = function(s) local t={} for w in string.gmatch(s, "[^%s]+") do table.insert(t, w) end return (table.unpack or unpack)(t) end
local function array(dimensi0n, default_val) assert(type(default_val) ~= 'table') local n=dimensi0n local m={}if default_val~=nil then m[1]={__index=function()return default_val end}end for i=2,n do m[i]={__index=function(p, k)local c=setmetatable({},m[i-1])rawset(p,k,c)return c end}end return setmetatable({},m[n])end
----

local N = read.n()

local function first_last(x)
    local s = tostring(x)
    local first = tonumber(s:sub(1,1))
    return first, x%10
end

local t = array(1, 0)
for i=1,N do
    local f, e = first_last(i)
    t[f*10+e] = t[f*10+e] + 1
end


local cnt = 0
for x=1,9 do
    for y=1,9 do
        local cnt_a = t[x*10+y]
        local cnt_b = t[y*10+x]
        cnt = cnt + cnt_a * cnt_b
    end
end
print(cnt)