#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
const int INF = (1 << 30) - 1;
const int MAXN = 100010;
const int MAX_LOG = 18;
const long long mod = 10007;
char s[100010];
int num[100010];
int res[100010];
int ans[100010];
int sum[100010];
int L, len;
bool Solve(int l, int r, int c) {
  int tl = l, tr = r;
  memset(res, 0, sizeof(res));
  for (int i = 1; i <= len; ++i) num[i] = s[i] - '0';
  if (tl == 2 && num[1] != 1) return false;
  int minus = 0;
  while (l <= r) {
    if (minus) {
      num[r] = num[r] - minus;
      minus = 0;
      if (num[r] < 0) {
        minus++;
        num[r] += 10;
      }
    }
    if (c == 0) {
      if (num[l] == (num[r] + 1) % 10)
        c = 1;
      else if (num[l] == num[r])
        c = 0;
      else
        return false;
      res[r] = num[r];
      if (l == tl && res[r] == 0) return false;
    } else {
      minus++;
      if (num[l] == (num[r] + 1) % 10)
        c = 1;
      else if (num[l] == num[r])
        c = 0;
      else
        return false;
      if (num[r] == 9)
        res[r] = 9, minus--;
      else
        res[r] = num[r] + 10;
    }
    l++;
    r--;
  }
  l = tl;
  r = tr;
  while (l <= r) {
    if (l == r) {
      if (res[r] % 2) return false;
      ans[l] = ans[r] = res[r] / 2;
      break;
    }
    ans[l] = (res[r] + 1) / 2;
    ans[r] = res[r] - ans[l];
    l++;
    r--;
  }
  c = 0;
  for (int i = tr; i >= tl; --i) {
    sum[i] = (ans[i] + ans[tl + tr - i] + c) % 10;
    c = (ans[i] + ans[tl + tr - i] + c) / 10;
  }
  if (c) sum[1] = 1;
  for (int i = 1; i <= len; ++i)
    if (sum[i] != s[i] - '0') return false;
  for (int i = tl; i <= tr; ++i) printf("%d", ans[i]);
  puts("");
  return true;
}
int main() {
  while (scanf("%s", s + 1) != EOF) {
    len = strlen(s + 1);
    if (!Solve(1, len, 0)) {
      if (!(len > 1 && Solve(2, len, 1))) {
        printf("0\n");
      }
    }
  }
  return 0;
}
