using
System;
using
System.Collections.Generic;
class
GFG{
static
int
[,,]dp =
new
int
[50, 10, 10];
static
void
initialize()
{
for
(
int
i = 0; i < 50; i++)
{
for
(
int
j = 0; j < 10; j++)
{
for
(
int
k = 0; k < 10; k++)
{
dp[i, j, k] = -1;
}
}
}
}
static
int
countOfNumbers(
int
digit,
int
prev1,
int
prev2,
int
N)
{
if
(digit == N + 1)
return
1;
if
(dp[digit, prev1, prev2] != -1)
return
dp[digit, prev1, prev2];
dp[digit, prev1, prev2] = 0;
if
(digit == 1)
{
for
(
int
j = (N == 1 ? 0 : 1);
j <= 9; ++j)
{
dp[digit, prev1, prev2] += countOfNumbers(
digit + 1, j, prev1, N);
}
}
else
if
(digit == 2)
{
for
(
int
j = 0; j <= 9; ++j)
{
dp[digit, prev1, prev2] += countOfNumbers(
digit + 1, j, prev1, N);
}
}
else
{
for
(
int
j = 0; j <= Math.Abs(prev1 - prev2); ++j)
{
dp[digit, prev1, prev2] += countOfNumbers(
digit + 1, j, prev1, N);
}
}
return
dp[digit, prev1, prev2];
}
public
static
void
Main()
{
initialize();
int
N = 3;
Console.Write(countOfNumbers(1, 0, 0, N));
}
}