#include <bits/stdc++.h>
#pragma warning(disable : 4996)
using namespace std;
char s[200000];
int a[200000];
int b[200000];
int n;
int m1, m2;
int dat[200000];
int suc;
int ma;
int type;
void pg(int x, int y) {
  int i, j;
  a[x] -= y;
  for (i = x; i < n; i++) {
    if (a[i] < 0)
      a[i] += 10, a[i + 1]--;
    else
      break;
  }
}
void back(int x, int y) {
  int i;
  if (x == y) {
    for (i = x + 2; i <= n; i++)
      if (a[i] != 0) return;
    int u = a[x] + a[x + 1] * 10;
    for (i = 0; i <= 9; i++) {
      if (i + i == u) {
        suc = 1;
        dat[x] = i;
        ma = x;
        type = 0;
        break;
      }
    }
    return;
  } else if (x + 1 == y) {
    for (i = x + 3; i <= n; i++)
      if (a[i] != 0) return;
    int u = a[x] + a[x + 1] * 10 + a[x + 2] * 100;
    for (i = 0; i <= 18; i++) {
      if (i + 10 * i == u) {
        suc = 1;
        dat[x] = i;
        ma = x;
        type = 1;
        break;
      }
    }
    return;
  }
  if (a[y + 1] == 1) {
    if (a[x] != 9) {
      dat[x] = a[x] + 10;
      int u = a[x];
      pg(x, u);
      pg(x + 1, 1);
      pg(y, u);
      pg(y + 1, 1);
      back(x + 1, y - 1);
    } else {
      dat[x] = a[x];
      int u = a[x];
      pg(x, u);
      pg(y, u);
      back(x + 1, y - 1);
    }
  } else if (a[y + 1] != 0) {
    return;
  } else {
    dat[x] = a[x];
    int u = a[x];
    pg(x, u);
    pg(y, u);
    back(x + 1, y - 1);
  }
  if (x == 0 && dat[0] == 0) suc = 0;
}
int ans[200000];
void printans() {
  int i, j;
  if (type == 0) {
    for (i = 0; i < ma; i++)
      ans[i] = (dat[i] + 1) / 2, ans[2 * ma - i] = dat[i] / 2;
    ans[ma] = dat[ma];
    for (i = (ans[0] == 0 ? 1 : 0); i <= ma * 2; i++) printf("%d", ans[i]);
  } else {
    for (i = 0; i <= ma; i++)
      ans[i] = (dat[i] + 1) / 2, ans[2 * ma + 1 - i] = dat[i] / 2;
    for (i = (ans[0] == 0 ? 1 : 0); i <= ma * 2 + 1; i++) printf("%d", ans[i]);
  }
  exit(0);
}
int main() {
  int i, j, k;
  scanf("%s", s);
  n = strlen(s);
  for (i = 0; i < n; i++) a[i] = s[i] - '0';
  reverse(a, a + n);
  memcpy(b, a, sizeof(a));
  back(0, n - 1);
  if (suc) printans();
  memcpy(a, b, sizeof(a));
  back(0, n - 2);
  if (suc) printans();
  printf("0");
  return 0;
}
