#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
char s[N];
int a[N], b[N], n;
int f[N][2][2];
pair<int, int> g1[N][2][2], g2[N][2][2];
void solve() {
  for (int l = 0, r = n + 1; l <= r; l++, r--) {
    if (l + 1 == r || l == r) break;
    int i = l;
    for (int j = 0; j < 2; j++) {
      for (int k = 0; k < 2; k++) {
        if (!f[i][j][k]) continue;
        for (int x = 0; x < 10; x++) {
          int y = (a[l + 1] - x - k + 10) % 10;
          if (r - 1 == n && y == 0) continue;
          for (int j2 = 0; j2 < 2; j2++) {
            if (j && (x + y + j2) < 10) continue;
            if (!j && (x + y + j2) >= 10) continue;
            if (a[r - 1] != (x + y + j2) % 10) continue;
            int k2 = (x + y + k) >= 10 ? 1 : 0;
            if (l + 2 < r - 1) {
              f[i + 1][j2][k2] = 1;
              g1[i + 1][j2][k2] = {x, y};
              g2[i + 1][j2][k2] = {j, k};
            } else if (l + 2 == r - 1) {
              if (j2 == k2) {
                f[i + 1][j2][k2] = 1;
                g1[i + 1][j2][k2] = {x, y};
                g2[i + 1][j2][k2] = {j, k};
              }
            } else if (l + 1 == r - 1) {
              if (j == k2 && j2 == k && x == y) {
                f[i + 1][j2][k2] = 1;
                g1[i + 1][j2][k2] = {x, y};
                g2[i + 1][j2][k2] = {j, k};
              }
            }
          }
        }
      }
    }
  }
  int x = (n + 1) / 2, j, k;
  for (int _ = 0; _ < 2; _++)
    for (int __ = 0; __ < 2; __++)
      if (f[x][_][__]) j = _, k = __;
  if (!f[x][j][k]) return;
  for (int l = x, r = x + (n % 2 == 0 ? 1 : 0); l >= 1; l--, r++) {
    int i = l;
    b[l] = g1[i][j][k].first, b[r] = g1[i][j][k].second;
    int _ = g2[i][j][k].first, __ = g2[i][j][k].second;
    j = _, k = __;
  }
  for (int i = n; i >= 1; i--) cout << b[i];
  cout << endl;
  exit(0);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> (s + 1);
  n = strlen(s + 1);
  reverse(s + 1, s + n + 1);
  for (int i = 1; i <= n; i++) a[i] = s[i] - '0';
  f[0][0][0] = 1;
  solve();
  if (a[n] == 1 && n > 1) {
    memset(f, 0, sizeof(f));
    memset(g1, 0, sizeof(g1));
    memset(g2, 0, sizeof(g2));
    f[0][1][0] = 1;
    --n;
    solve();
  }
  cout << 0 << endl;
  return 0;
}
