n = int(eval(input()))

# else以下は10以上の時のみ適応できるので10未満は埋め込み

if n < 10:

    print(n)

else:

    # 説明中のiを求めるため10でわる(切り捨て)

    x = n // 10

    # 公式による計算。x^2+8

    basenum = x * x + 8

    addnum = 0

    # ここ以下で(10*i から n, 1 から n)と(1 から n, 10*i から n)の数え上げを行うが、

    # 重複した数え上げがないか確認するフラグ

    hassame = False

    # 数え上げ(ここでは、(10*i から n, 1 から n)だけ数え上げ、倍にすることで(1 から n, 10*i から n)分も数え上げる)

    for i in range(x * 10 + 1, n + 1):

        for j in range(1, n + 1):

            if str(i)[0] == str(j)[-1] and str(i)[-1] == str(j)[0]:

                addnum += 1

                if i == j:

                    hassame = True

    res = basenum + addnum * 2 # 10の倍数の公式分と　力わざで数え上げた加算

    res -= 1 if hassame else 0 # ダブルカウントがあれば1減らす

    print(res)

n = int(eval(input()))

dat = [[0] * 10 for _ in range(10)]

for i in range(1, n+1):

    dat[int(str(i)[0])][int(str(i)[-1])] += 1

res = sum([dat[a][b] * dat[b][a] for a in range(10) for b in range(10)])

print(res)
n = int(eval(input()))
# else以下は10以上の時のみ適応できるので10未満は埋め込み
if n < 10:
    print(n)
else:
    # 説明中のiを求めるため10でわる(切り捨て)
    x = n // 10
    # 公式による計算。x^2+8
    basenum = x * x + 8
    addnum = 0
    # ここ以下で(10*i から n, 1 から n)と(1 から n, 10*i から n)の数え上げを行うが、
    # 重複した数え上げがないか確認するフラグ
    hassame = False
    # 数え上げ(ここでは、(10*i から n, 1 から n)だけ数え上げ、倍にすることで(1 から n, 10*i から n)分も数え上げる)
    for i in range(x * 10 + 1, n + 1):
        for j in range(1, n + 1):
            if str(i)[0] == str(j)[-1] and str(i)[-1] == str(j)[0]:
                addnum += 1
                if i == j:
                    hassame = True
    res = basenum + addnum * 2  # 10の倍数の公式分と　力わざで数え上げた加算
    res -= 1 if hassame else 0  # ダブルカウントがあれば1減らす
    print(res)

n = int(eval(input()))
dat = [[0] * 10 for _ in range(10)]
for i in range(1, n + 1):
    dat[int(str(i)[0])][int(str(i)[-1])] += 1
res = sum([dat[a][b] * dat[b][a] for a in range(10) for b in range(10)])
print(res)

-# else以下は10以上の時のみ適応できるので10未満は埋め込み -if n < 10: -    print(n) -else: -    # 説明中のiを求めるため10でわる(切り捨て) -    x = n // 10 -    # 公式による計算。x^2+8 -    basenum = x * x + 8 -    addnum = 0 -    # ここ以下で(10*i から n, 1 から n)と(1 から n, 10*i から n)の数え上げを行うが、 -    # 重複した数え上げがないか確認するフラグ -    hassame = False -    # 数え上げ(ここでは、(10*i から n, 1 から n)だけ数え上げ、倍にすることで(1 から n, 10*i から n)分も数え上げる) -    for i in range(x * 10 + 1, n + 1): -        for j in range(1, n + 1): -            if str(i)[0] == str(j)[-1] and str(i)[-1] == str(j)[0]: -                addnum += 1 -                if i == j: -                    hassame = True -    res = basenum + addnum * 2  # 10の倍数の公式分と　力わざで数え上げた加算 -    res -= 1 if hassame else 0  # ダブルカウントがあれば1減らす -    print(res) +dat = [[0] * 10 for _ in range(10)] +for i in range(1, n + 1): +    dat[int(str(i)[0])][int(str(i)[-1])] += 1 +res = sum([dat[a][b] * dat[b][a] for a in range(10) for b in range(10)]) +print(res)