#nullable enable #region var (_input, _iter) = (Array.Empty(), 0); T I() where T : IParsable { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Trim().Split(' '), 0); return T.Parse(_input[_iter++], null); } #endregion var f = new Dictionary<(long, int), long>(); for (var i = 0; i <= 9; i++) f[(0, i)] = i; long F(long x, int d) { var key = (x, d); if (f.TryGetValue(key, out var cv)) return cv; var res = 0L; for (var i = 0; i <= Math.Min(x, 9); i++) res += F((x - i) / 10, Math.Max(d, i)); return f[key] = res; } var ans = new List(); var t = I(); for (var i = 0; i < t; i++) { var l = I(); var r = I(); ans.Add(F(r, 0) - F(l - 1, 0)); } Console.WriteLine(string.Join(Environment.NewLine, ans));