#include <bits/stdc++.h>
using namespace std;
struct state {
  int i, j, k, h, cost, zero;
  bool operator<(const state &r) const { return r.cost < cost; }
};
string a, b, c;
char s[100];
bool vis[10][10][10][10][8];
int cost[10][10][10][10][8];
state p[10][10][10][10][8];
state m[10][10][10][10][8];
string A, B, C;
void print(state s) {
  if (p[s.i][s.j][s.k][s.h][s.zero].i == -1) return;
  A += m[s.i][s.j][s.k][s.h][s.zero].i + '0';
  B += m[s.i][s.j][s.k][s.h][s.zero].j + '0';
  C += m[s.i][s.j][s.k][s.h][s.zero].k + '0';
  print(p[s.i][s.j][s.k][s.h][s.zero]);
}
void BFS() {
  for (int i = 0; i <= a.size(); ++i)
    for (int j = 0; j <= b.size(); ++j)
      for (int k = 0; k <= c.size(); ++k)
        for (int z = 0; z < 10; ++z)
          for (int m = 0; m < 8; ++m) cost[i][j][k][z][m] = 1e8;
  state s, ns, pr;
  s.i = s.j = s.k = s.h = s.cost = s.zero = 0;
  priority_queue<state> q;
  q.push(s);
  cost[0][0][0][0][0] = 0;
  ns.i = -1;
  p[0][0][0][0][0] = ns;
  while (!q.empty()) {
    s = q.top();
    q.pop();
    if (vis[s.i][s.j][s.k][s.h][s.zero]) continue;
    vis[s.i][s.j][s.k][s.h][s.zero] = true;
    if (s.i == a.size() && s.j == b.size() && s.k == c.size() && s.h == 0 &&
        s.zero == 7) {
      print(s);
      return;
    }
    for (int i = 0; i < 10; ++i)
      if ((s.zero & 1) == 0 || i == 0)
        for (int j = 0; j < 10; ++j)
          if ((s.zero & 2) == 0 || j == 0)
            for (int k = 0; k < 10; ++k) {
              if ((s.zero & 4) && k != 0) continue;
              if ((i + j + s.h) % 10 != k) continue;
              ns = s;
              if (s.i < a.size() && a[s.i] - '0' == i) ++ns.i;
              if (!(s.zero & 1)) ++ns.cost;
              if (s.j < b.size() && b[s.j] - '0' == j) ++ns.j;
              if (!(s.zero & 2)) ++ns.cost;
              if (s.k < c.size() && c[s.k] - '0' == k) ++ns.k;
              if (!(s.zero & 4)) ++ns.cost;
              ns.h = (i + j + s.h) / 10;
              for (int end = 0; end < 8; ++end) {
                ns.zero = end | s.zero;
                if ((ns.zero & 1) && ns.i != a.size()) continue;
                if ((ns.zero & 2) && ns.j != b.size()) continue;
                if ((ns.zero & 4) && ns.k != c.size()) continue;
                if (cost[ns.i][ns.j][ns.k][ns.h][ns.zero] <= ns.cost) continue;
                cost[ns.i][ns.j][ns.k][ns.h][ns.zero] = ns.cost;
                pr.i = i;
                pr.j = j;
                pr.k = k;
                p[ns.i][ns.j][ns.k][ns.h][ns.zero] = s;
                m[ns.i][ns.j][ns.k][ns.h][ns.zero] = pr;
                q.push(ns);
              }
            }
  }
}
void fix(string &s) {
  for (int i = 0; i < s.size(); ++i)
    if (s[i] != '0' || i + 1 == s.size()) {
      s = s.substr(i);
      break;
    }
}
int main() {
  scanf("%[^+]+", s);
  a = s;
  scanf("%[^=]=", s);
  b = s;
  scanf("%s=", s);
  c = s;
  reverse(a.begin(), a.end());
  reverse(b.begin(), b.end());
  reverse(c.begin(), c.end());
  BFS();
  fix(A);
  fix(B);
  fix(C);
  puts((A + "+" + B + "=" + C).c_str());
  return 0;
}
