/* http://projecteuler.net/
 *
 * Problem 55
 * How many Lychrel numbers are there below ten-thousand?
 *
 * Solution by Melkor (Filip Niksic, fniksic@gmail.com)
 *
 **/

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class Number {
    vector<int> n;
public:
    Number(int _n = 0) : n() {
	while (_n) {
	    n.push_back(_n % 10);
	    _n /= 10;
	}
    }
    void reverse() {
	for (int i = 0; i < n.size() / 2; ++i)
	    swap(n[i], n[n.size() - i - 1]);
    }
    Number& operator+=(const Number &rhs) {
	int carry = 0, i = 0;
	for ( ; i < n.size() && i < rhs.n.size(); ++i) {
	    n[i] += rhs.n[i] + carry;
	    carry = n[i] / 10;
	    n[i] %= 10;
	}
	for ( ; i < n.size(); ++i) {
	    n[i] += carry;
	    carry = n[i] / 10;
	    n[i] %= 10;
	}
	for ( ; i < rhs.n.size(); ++i) {
	    n.push_back(rhs.n[i] + carry);
	    carry = n.back() / 10;
	    n.back() %= 10;
	}
	if (carry)
	    n.push_back(carry);
	return *this;
    }
    bool palindrome() const {
	for (int i = 0; i < n.size() / 2; ++i)
	    if (n[i] != n[n.size() - i - 1])
		return false;
	return true;
    }
};

bool lychret(int n) {
    int count = 0;
    Number N(n);
    do {
	++count;

	Number R(N);
	R.reverse();
	N += R;
    } while(!N.palindrome() && count < 50);
    if (count >= 50)
	return true;
    else
	return false;
}

int main() {
    int count = 0;
    for (int n = 1; n < 10000; ++n)
	if (lychret(n))
	    ++count;
    cout << count << endl;
    return 0;
}

