#include <iostream>
#include <string>
#include <sstream>
using namespace std;

string add(string summand1, string summand2)
{
	string sum;
	unsigned short p;
	unsigned short q;
	unsigned short r;
	bool izero = false;
	bool carry = false;
	unsigned long i;
	unsigned long l = summand1.size();
	unsigned long m = summand2.size();
	char t;
	
	sum.clear();
	
	if(l < m){
		while(l < m){
			summand1.insert(0,"0");
			l = summand1.size();
			}
	}else{
		if(m < l){
			while(m < l){
				summand2.insert(0,"0");
				m = summand2.size();
		}}}
	
	for(i = (unsigned) summand1.size() - 1;	izero == false; i--){
		
		if(i == 0)
			izero = true;
		
		if(summand1[i] == '0')
			p = summand1[i] - 48;
		else
			p = summand1[i] - 48;
		
		if(summand2[i] == '0')
			q = summand2[i] - 48;
		else
			q = summand2[i] - 48;
		
		if(carry == false){
			r = p + q;
			if(r > 9){
				r = r - 10;
				carry = true;
					 }
		} else {{
			r = p + q + 1;
			carry = false;
		}
			if(r > 9){
				r = r - 10;
				carry = true;
			   		}
				}
		
		if(r == 0)
			t = r + 48;
		else
			t = r + 48;

		string u;
		stringstream ss;
		ss << t;
		ss >> u;
		sum.insert(0,u);
																}
	
	if(((unsigned) summand1.size() == (unsigned) sum.size()) && (carry == true))
		sum.insert(0,"1");
	
	return (sum);
}

bool greaterthan(string firstnumber, string secondnumber)
{
	bool isgreater;
	bool cond = true;
	
	if((unsigned) firstnumber.size() > (unsigned) secondnumber.size())
		isgreater = true;
	else{
		if((unsigned) firstnumber.size() < (unsigned) secondnumber.size())
			isgreater = false;
		else{
			if((unsigned) firstnumber.size() == (unsigned) secondnumber.size()){
				for(unsigned long i = 0; (i < (unsigned) firstnumber.size()) && (cond == true); i++){
					unsigned short p = firstnumber[i] - 48;
					unsigned short q = secondnumber[i] - 48;
					if(p > q){
						isgreater = true;
						cond = false;
					}else{
						if(p < q){
							isgreater = false;
							cond = false;
	}}}}}}
	return (isgreater);
}

string reversedigits(string numbertoreverse)
{
	string numreversed;
	long i = (unsigned) numbertoreverse.size() - 1;
	
	while(i >= 0){
		string u;
		stringstream ss;
		ss << numbertoreverse[i];
		ss >> u;
		numreversed.append(u);
		i--;
	}
	
	return (numreversed);
}

bool digitoccurrencecheck(string digoccnum)
{
	bool eachdigitatleastonce = false;
	string digits = "0123456789";
	bool zero = false;
	bool one = false;
	bool two = false;
	bool three = false;
	bool four = false;
	bool five = false;
	bool six = false;
	bool seven = false;
	bool eight = false;
	bool nine = false;
	
	for(unsigned short i = 0; i < 11; i++){
		
		unsigned long j = 0;
		while(j < digoccnum.size() - 1){
			if(digoccnum[j] == digits[i]){
				
				if(digits[i] == '0')
					zero = true;
				if(digits[i] == '1')
					one = true;
				if(digits[i] == '2')
					two = true;
				if(digits[i] == '3')
					three = true;
				if(digits[i] == '4')
					four = true;
				if(digits[i] == '5')
					five = true;
				if(digits[i] == '6')
					six = true;
				if(digits[i] == '7')
					seven = true;
				if(digits[i] == '8')
					eight = true;
				if(digits[i] == '9')
					nine = true;	
			}
			j++;
		}
		
	}
	
	if(zero == true && one == true && two == true && three == true && four == true && five == true
			&& six == true && seven == true && eight == true && nine == true)
		eachdigitatleastonce = true;
	
	return (eachdigitatleastonce);
}

int main() {
	
	string lowbound = "1";
	string upbound = "100";
	string reversed;
	string testcandidate;
	string counter = "0";
	
	for(lowbound = lowbound; greaterthan(lowbound, upbound) == false; lowbound = add(lowbound, "1")){
		
		testcandidate = lowbound;
		
		while(digitoccurrencecheck(testcandidate) == false){
			testcandidate = add(testcandidate, reversedigits(testcandidate));
			counter = add(counter, "1");
			
			if(digitoccurrencecheck(testcandidate) == true)
				cout << counter << endl;
		}
		
		counter = "0";
	}
	
	return 0;
}