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 Java8 (OpenJDK 1.8.0) (judge verdict: Wrong Answer)

import java.util.*;

public class Main{

    public static void main(String args[]){

        Scanner scan = new Scanner(System.in);
        Integer n = scan.nextInt();
        
        int c = 0;
        int count = 0;
        for(int i=1;i<=n;i++){
            int len = String.valueOf(i).length();
            int lead = i / (int)Math.pow(10,len-1);
            int end = i%10;
            //System.out.println(i + " :  " + len + "  " + lead + "  " + end);
            if(end != 0){
                for(int j=0;j<String.valueOf(n).length();j++){
                    if(i>10 && lead!=end && j==0){

                    }else{
                        int v;
                        if(lead == end && j==0){
                            v = end * (int)Math.pow(10,j);
                        }else{
                            v = end * (int)Math.pow(10,j) + lead;
                        }
                        //System.out.println("j: " + j + "      count: " + count + "    v: " + v);
                        if(v > n) break;
                        if(j==0 || j==1){
                            count++;
                        }else{
                            int tmp = 0;
                            if(String.valueOf(n).length()<=String.valueOf(v).length()){
                                count += (n-v) / 10;

                            }else{
                                count += (int)Math.pow(10,j-1);
                            }
                        }
                    //System.out.println("count: " + count);
                    }
                }
            }
        }

        System.out.println(count);
    }

    static int factorial(int n){
        if(n == 0){
          return 1;
        }
        return n * factorial(n-1);
      }
}
/*
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
*/