#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
char s[N];
int jw[N];
int A[N], n;
bool solve(int n) {
  for (int i = 2; i < n; ++i) {
    int j = n - i + 1;
    if (i > j) break;
    int nx = A[i - 1] + A[j + 1];
    int wL = jw[i - 1] ? s[i] - '1' : s[i] - '0';
    if (nx % 10 != s[j + 1] - '0' && nx % 10 != (s[j + 1] - '1' + 10) % 10)
      return 0;
    int wR = s[j] - '0' + 10 * jw[j];
    if (wR % 10 != (wL + 1) % 10 && wR % 10 != (wL + 10) % 10) return 0;
    if (i + 1 == j) {
      if (wR < 10)
        if (wR != wL) return 0;
      if (wR == 10 && wL == 9) return 0;
      if (wR >= 10)
        if (wR % 10 == (wL + 1) % 10)
          --wR;
        else
          return 0;
      A[i] = wR / 2, A[j] = wR - A[i];
    } else if (i == j) {
      if (jw[i - 1]) --wR;
      if (wR % 10 != wL % 10) return 0;
      if (wR % 2) return 0;
      A[i] = wR / 2;
    } else {
      if (wR % 10 == (wL + 1) % 10) --wR;
      A[i] = wR / 2, A[j] = wR - A[i];
    }
    if (A[i] + A[j] + jw[i - 1] >= 10) jw[i] = 1;
    if (A[i] > 9 || A[j] > 9) return 0;
    if ((A[i] + A[j]) % 10 != s[j] - '0') jw[j - 1] = 1;
  }
  return 1;
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> (s + 1);
  n = strlen(s + 1);
  reverse(s + 1, s + n + 1);
  if (n == 1 || n == 2 && s[2] == '1') {
    if (s[1] == '1' && s[2] == '1') return puts("10"), 0;
    int x = s[1] - '0' + (n == 2 ? 10 : 0);
    if (x % 2)
      puts("0");
    else
      printf("%d\n", x / 2);
    return 0;
  } else if (n == 2) {
    if (s[1] != s[2])
      puts("0");
    else
      printf("%c0\n", s[1]);
    return 0;
  } else if (n == 3 && s[n] == '1' && s[n - 1] == s[n - 2] + 1) {
    int x = s[1] + 10 - '0';
    x /= 2;
    int y = s[1] + 10 - '0' - x;
    int a = x * 10 + y, b = y * 10 + x + a;
    if (b % 10 == s[1] - '0' && b / 10 % 10 == s[2] - '0' &&
        b / 100 == s[3] - '0') {
      printf("%d\n", a);
      return 0;
    }
  }
  if (s[n] >= s[1] && s[n] - s[1] < 2) {
    A[1] = (s[1] - '0') / 2, A[n] = s[1] - '0' - A[1];
    if ((A[1] + A[n]) % 10 != s[n] - '0') jw[n - 1] = 1;
    if (A[n] != 0) {
      if (solve(n)) {
        for (int i = n; i; --i) cout << A[i];
        return 0;
      }
    }
  }
  if (n == 3) return puts("0"), 0;
  memset(jw, 0, sizeof jw);
  if (s[n] == '1' && s[n - 1] >= s[1] && s[n - 1] - s[1] < 2) {
    A[1] = (s[1] - '0' + 10) / 2, A[n - 1] = s[1] - '0' + 10 - A[1];
    jw[1] = jw[n - 1] = 1;
    if ((A[1] + A[n - 1]) % 10 != s[n - 1] - '0') jw[n - 2] = 1;
    if (A[n - 1] != 0) {
      if (solve(n - 1)) {
        for (int i = n - 1; i; --i) cout << A[i];
        return 0;
      }
    }
  }
  puts("0");
  return 0;
}
