#include #include #include #include using namespace std; bool is_palindrome(int x) { string s = ""; while(x > 0) { int digit = x % 10; s += (digit + '0'); x /= 10; } int i = 0, j = s.size() - 1; while(i < j) { if(s[i] != s[j]) { return false; } i++; j--; } return true; } int main() { vector palindromes; for(int i = 1; i <= 100000; i++) { if(is_palindrome(i)) { palindromes.push_back(i); } } int S, E; cin >> S >> E; vector visited(100000, false); visited[S] = true; queue q; q.push(S); q.push(0); while(!q.empty()) { int number = q.front(); q.pop(); int dist = q.front(); q.pop(); if(number == E) { cout << dist << endl; return 0; } for(int i = 0; i < palindromes.size(); i++) { int palindrome = palindromes[i]; if(palindrome < number and palindrome + number <= E) { if(!visited[palindrome + number]) { visited[palindrome + number] = true; q.push(palindrome + number); q.push(dist + 1); } } } } return 0; }