Problem:
Score : 300 points

Problem Statement

You are given an integer N. Among the integers between 1 and N (inclusive), how many Shichi-Go-San numbers (literally "Seven-Five-Three numbers") are there?

Here, a Shichi-Go-San number is a positive integer that satisfies the following condition:

When the number is written in base ten, each of the digits 7, 5 and 3 appears at least once, and the other digits never appear.

Constraints

1 \leq N < 10^9

N is an integer.

Input

Input is given from Standard Input in the following format:

N

Output

Print the number of the Shichi-Go-San numbers between 1 and N (inclusive).

Sample Input 1

575

Sample Output 1

4

There are four Shichi-Go-San numbers not greater than 575: 357, 375, 537 and 573.

Sample Input 2

3600

Sample Output 2

13

There are 13 Shichi-Go-San numbers not greater than 3600: the above four numbers, 735, 753, 3357, 3375, 3537, 3557, 3573, 3575 and 3577.

Sample Input 3

999999999

Sample Output 3

26484

Solution in C++14 (GCC 5.4.1) (judge verdict: Accepted)

#include <bits/stdc++.h>
#define INF 2147483647
#define INF_LL 9223372036854775807
using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;

int main() {
	int N;
	cin >> N;
	
	vector<int> ans;

	for (int i = 3; i < 10; i++) {
		for (int j = 1; j < i - 1; j++)for (int k = 1; k < i - j; k++)for (int s = 1; s < i - j - k + 1; s++) {
			if (j + k + s != i)continue;
			vector<int> v;
			for (int a = 0; a < j; a++)v.push_back(3);
			for (int a = 0; a < k; a++)v.push_back(5);
			for (int a = 0; a < s; a++)v.push_back(7);
			do {
				int tmp = 0;
				for (int a = 0; a < v.size(); a++) {
					tmp += v[a] * pow(10, a);
				}
				ans.push_back(tmp);
			} while (next_permutation(v.begin(), v.end()));
		}
	}
	sort(ans.begin(), ans.end());
	for (int i = 0; i < ans.size(); i++) {
		if (N < ans[i]) {
			cout << i << endl;
			break;
		}
		if (i == ans.size() - 1) {
			cout << i+1 << endl;
		}
	}
	return 0;
}