#include #include #include #include #include using namespace std; int main() { vector palindromes; for(int i = 1; i <= 99999; i++) { vector v; int n = i; while(n > 0) { int digit = n % 10; v.push_back(digit); n /= 10; } int l = 0, r = (int) v.size() - 1; bool ok = true; while(l < r) { if(v[l] == v[r]) { l++; r--; } else { ok = false; break; } } if(ok) { palindromes.push_back(i); } } int S, E; cin >> S >> E; queue Q; Q.push(S); Q.push(0); vector visited(100000, false); while(!Q.empty()) { int number = Q.front(); Q.pop(); int cekor = Q.front(); Q.pop(); if(number == E) { cout << cekor << endl; return 0; } for(int i = 0; i < palindromes.size(); i++) { if(palindromes[i] < number and palindromes[i] + number <= E and !visited[palindromes[i] + number]) { Q.push(palindromes[i] + number); Q.push(cekor + 1); visited[palindromes[i] + number] = true; } } } return 0; }