using System.Collections.Generic; using System.Linq; using static System.Math; using System; public class Hello { static void Main() { var n = int.Parse(Console.ReadLine().Trim()); Console.WriteLine(getAns(n)); } static int getAns(int n) { if (n <= 99) return n / 3 - 3; var d = n.ToString().Length; var ans = (int)Pow(4, d - 1) + 14; var k = "0369"; var k2 = new int[] { 3, 6, 9 }; var q = new Queue(); var p1 = n.ToString()[0] - '0'; foreach (var x in k2) if (x <= p1) q.Enqueue(x.ToString()); while (q.Count() > 0) { var w = q.Dequeue(); if (w.Length == d) { if (int.Parse(w) <= n) ans++; } else foreach (var x in k) q.Enqueue(w + x); } return ans; } }