#include <bits/stdc++.h>
const int N = 100005;
char str[N], ans[N];
bool solve(int m, int len, bool st) {
  int i;
  bool carry;
  if (!st && str[len] == '0') return false;
  for (i = carry = st; i < m; i++) {
    int t = str[i] - str[len - i];
    if (str[len - i] < '0') {
      ans[i] = '9';
      ans[len - i] = '0';
      str[len - i - 1]--;
      if (str[i] == '0' && carry)
        carry = 1;
      else if (str[i] == '9' && !carry)
        carry = 0;
      else
        return false;
      continue;
    }
    if (t == -9) {
      if (carry)
        t = 1, carry = 0;
      else
        return false;
    }
    if (str[i] < '0' || t > 1 || t < 0 || (carry && str[len - i] == '9'))
      return false;
    if (carry)
      ans[i] = '9', ans[len - i] = str[len - i] + 1, str[len - i - 1]--;
    else
      ans[i] = str[len - i], ans[len - i] = '0';
    carry = t;
  }
  if (i < m)
    return false;
  else if ((len & 1) == 0) {
    if ((str[i] - '0') & 1)
      return false;
    else {
      ans[i] = ((str[i] - '0' + carry * 10) >> 1) + '0';
      printf("%s\n", ans + st);
    }
  } else {
    if (str[i + 1] < '0' && str[i] > '0') return false;
    if (carry && str[i + 1] < '0') {
      ans[i] = '9';
      ans[i + 1] = '0';
      printf("%s\n", ans + st);
    } else if (carry && (str[i] == str[i + 1] + 1)) {
      ans[i] = '9';
      ans[i + 1] = str[i + 1] + 1;
      printf("%s\n", ans + st);
    } else if (!carry && (str[i + 1] == str[i])) {
      ans[i] = str[i];
      ans[i + 1] = '0';
      printf("%s\n", ans + st);
    } else
      return false;
  }
  return true;
}
int main() {
  while (~scanf("%s", str)) {
    int i, len = strlen(str) - 1;
    ans[len + 1] = 0;
    if (!solve(len >> 1, len, 0) &&
        (str[0] != '1' || !len || !solve((len - 1) / 2 + 1, len + 1, 1)))
      printf("0\n");
  }
  return 0;
}
