#include <bits/stdc++.h>
using namespace std;
string CH(string x) {
  int L, R, L1, R1, DL, DR;
  string D = x;
  for (L = L1 = R1 = 0, R = x.size() - 1; L < R; L++, R--) {
    DL = x[L] - '0';
    DR = x[R] - '0';
    if (L1) DL += 10;
    if (R1) DR--;
    if (DR < 0) {
      DR += 10;
      R1 = 2;
    }
    if (DL == DR || DL == DR + 10) {
      D[L] = '0' + (DL + 1) / 2;
      D[R] = '0' + DL / 2;
      L1 = 0;
      R1 = DL / 10 || (R1 > 1);
    } else if (DL == DR + 1 || DL == DR + 11) {
      DL--;
      D[L] = '0' + (DL + 1) / 2;
      D[R] = '0' + DL / 2;
      L1 = 1;
      R1 = DL / 10 || (R1 > 1);
    } else
      break;
    if (D[L] > '9') break;
  }
  if (L > R && L1 == R1 && D[0] != '0') return D;
  if (L == R) {
    DL = x[L] - '0';
    DL -= R1;
    if (!(DL & 1)) {
      DL += 10 * L1;
      D[L] = '0' + DL / 2;
      if (D[0] != '0') return D;
    }
  }
  if (x[0] != '1' || x == "1") return "0";
  D = x;
  for (L = L1 = 1, R1 = 0, R = x.size() - 1; L < R; L++, R--) {
    DL = x[L] - '0';
    DR = x[R] - '0';
    if (L1) DL += 10;
    if (R1) DR--;
    if (DR < 0) {
      DR += 10;
      R1 = 2;
    }
    if (DL == DR || DL == DR + 10) {
      D[L] = '0' + (DL + 1) / 2;
      D[R] = '0' + DL / 2;
      L1 = 0;
      R1 = DL / 10 || (R1 > 1);
    } else if (DL == DR + 1 || DL == DR + 11) {
      DL--;
      D[L] = '0' + (DL + 1) / 2;
      D[R] = '0' + DL / 2;
      L1 = 1;
      R1 = DL / 10 || (R1 > 1);
    } else
      return "0";
    if (D[L] > '9') return "0";
  }
  if (L > R && L1 == R1 && D[1] != '0') return D.substr(1);
  if (L == R) {
    DL = x[L] - '0';
    DL -= R1;
    if (DL < 0) DL += 10;
    if (!(DL & 1)) {
      DL += 10 * L1;
      D[L] = '0' + DL / 2;
      if (D[1] != '0') return D.substr(1);
    }
  }
  return "0";
}
int main(int argc, char *argv[]) {
  string x;
  cin >> x;
  cout << CH(x);
  return EXIT_SUCCESS;
}
