Problem:
Score : 400 points

Problem Statement

Given is a positive integer N.

Find the number of pairs (A, B) of positive integers not greater than N that satisfy the following condition:

When A and B are written in base ten without leading zeros, the last digit of A is equal to the first digit of B, and the first digit of A is equal to the last digit of B.

Constraints

1 \leq N \leq 2 \times 10^5

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N

Output

Print the answer.

Sample Input 1

25

Sample Output 1

17

The following 17 pairs satisfy the condition: (1,1), (1,11), (2,2), (2,22), (3,3), (4,4), (5,5), (6,6), (7,7), (8,8), (9,9), (11,1), (11,11), (12,21), (21,12), (22,2), and (22,22).

Sample Input 2

1

Sample Output 2

1

Sample Input 3

100

Sample Output 3

108

Sample Input 4

2020

Sample Output 4

40812

Sample Input 5

200000

Sample Output 5

400000008

Solution in Rust (1.15.1) (judge verdict: Accepted)

macro_rules! get_one {
    ($t:ty) => {{
        let mut line: String = String::new();
        std::io::stdin().read_line(&mut line).unwrap();
        line.trim().parse::<$t>().unwrap()
    }};

    ($t:ty; $n:expr) => {
        (0..$n).map(|_| get_one!($t)).collect::<Vec<_>>()
    };
}

fn main() {
    let n = get_one!(usize);
    let mut v_num_f: Vec<usize> = vec![0; 100];
    let mut v_num_g: Vec<usize> = vec![0; 100];

    for i in 1..n+1 {
        let (ht, th) = f(i);
        v_num_f[ht] += 1;
        v_num_g[th] += 1;
    }

    let sum: usize = v_num_f.into_iter().zip(v_num_g.into_iter())
        .map(|(a, b)| a * b)
        .sum();

    println!("{}", sum)

}

/// 両端だけを取る．
fn f(num: usize) -> (usize, usize) {
    let strnum = num.to_string();
    let head = strnum.chars().nth(0).unwrap();
    let tail = strnum.chars().rev().nth(0).unwrap();
    let ht = vec![head, tail].into_iter().collect::<String>().parse::<usize>().unwrap();
    let th = vec![tail, head].into_iter().collect::<String>().parse::<usize>().unwrap();
    (ht, th)
}