#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
double PI = 4 * atan(1);
string x;
bool p = false;
int ori, final[100000];
vector<int> n, n1, ans;
pair<int, int> v[19];
void subtract(int x) {
  n[0] -= x;
  n[n.size() - 1] -= x;
  int ind = n.size() - 1;
  while (ind > 0 && n[ind] < 0) {
    n[ind] += 10;
    n[ind - 1] -= 1;
    if (n[ind] < 0) {
      n[ind] += 10;
      n[ind - 1] -= 1;
    }
    ind--;
  }
}
bool test0() {
  for (int i = 0; i < n.size(); i++)
    if (n[i] != 0) return false;
  return true;
}
void dp(int k) {
  while (n.size() > k) {
    n[1] += 10 * n[0];
    n.erase(n.begin());
  }
  if (k == 1) {
    if (n[0] % 2 == 0) {
      ans.push_back(n[0]);
      p = true;
    }
    return;
  }
  int last = n[n.size() - 1];
  if (last + 10 <= n[0]) last += 10;
  if (last > 18) return;
  if (0 <= n[0] - last && n[0] - last <= 2) {
    subtract(last);
    if (n[0] < 0)
      return;
    else if (n[0] > 1)
      return;
    ans.push_back(last), n.erase(n.end() - 1);
    if (k > 2)
      dp(k - 2);
    else if (test0())
      p = true;
  }
}
void finish() {
  for (int i = 0; i < (ori + 1) / 2; i++) {
    if (ori % 2 == 1 && i == ori / 2)
      final[i] = ans[i] / 2;
    else
      final[i] = v[ans[i]].first, final[ori - 1 - i] = v[ans[i]].second;
  }
  for (int i = 0; i < ori; i++) cout << final[i];
}
int main() {
  cin >> x;
  for (int i = 0; i < x.length(); i++) n.push_back(int(x[i] - '0'));
  if (x.length() == 1 && x[0] == '1') {
    cout << 0;
    return 0;
  }
  for (int i = 0; i < 19; i++) {
    if (i % 2 == 0)
      v[i].first = i / 2, v[i].second = i / 2;
    else
      v[i].first = (i + 1) / 2, v[i].second = (i - 1) / 2;
  }
  if (n[0] != 1) {
    ori = n.size();
    dp(ori);
    if (p)
      finish();
    else
      cout << 0;
  } else {
    n1 = n;
    if (n[n.size() - 1] == 1) {
      ori = n.size();
      dp(ori);
      if (p) {
        finish();
        return 0;
      }
    }
    n = n1, ans.clear();
    n[1] += 10 * n[0], n.erase(n.begin());
    p = false, ori = n.size();
    dp(ori);
    if (p) {
      finish();
      return 0;
    }
    cout << 0;
  }
  return 0;
}
