#include <bits/stdc++.h>
using namespace std;
long long conv(string s) {
  long long x;
  stringstream k(s);
  k >> x;
  return x;
}
int main() {
  cin.tie(0);
  std::ios::sync_with_stdio(false);
  string s, y, m, t;
  cin >> s;
  set<string> st;
  long long k = s.size();
  for (int i = 0; i < s.size(); i++) {
    if (k < 12) {
      break;
    }
    m = s.substr(i, 12);
    y = m.substr(8, 12);
    t = m.substr(2, 12);
    if (y == "2015" && isdigit(m[0]) && isdigit(m[1]) && isdigit(m[2]) &&
        isdigit(m[3])) {
      st.insert(t);
    }
    k--;
  }
  k = s.size();
  if (!st.size()) {
    for (int i = 0; i < s.size(); i++) {
      if (k < 12) {
        break;
      }
      m = s.substr(i, 12);
      y = m.substr(8, 12);
      t = m.substr(2, 12);
      if (y == "2014" && isdigit(m[0]) && isdigit(m[1]) && isdigit(m[2]) &&
          isdigit(m[3])) {
        st.insert(t);
      }
      k--;
    }
  }
  k = s.size();
  if (!st.size()) {
    for (int i = 0; i < s.size(); i++) {
      if (k < 12) {
        break;
      }
      m = s.substr(i, 12);
      y = m.substr(8, 12);
      t = m.substr(2, 12);
      if (y == "2013" && isdigit(m[0]) && isdigit(m[1]) && isdigit(m[2]) &&
          isdigit(m[3])) {
        st.insert(t);
      }
      k--;
    }
  }
  if (st.size()) {
    long long MAX = 0, res = 0;
    if (st.size() == 1)
      for (set<string>::iterator it = st.begin(); it != st.end(); it++) {
        cout << *it << endl;
        return 0;
      }
    else {
      vector<string> vec, v, ok;
      for (set<string>::iterator it = st.begin(); it != st.end(); it++) {
        vec.push_back(*it);
      }
      for (int i = 0; i < vec.size(); i++) {
        string k = vec[i];
        res = conv(k.substr(0, 2));
        if (res > MAX) {
          MAX = res;
          if (v.size()) {
            v.erase(v.begin(), v.end());
          }
          v.push_back(k);
        }
      }
      if (v.size() == 1) {
        cout << v[0] << endl;
        return 0;
      } else {
        MAX = 0, res = 0;
        for (int i = 0; i < v.size(); i++) {
          string k = v[i];
          res = conv(k.substr(3, 4));
          if (res > MAX) {
            MAX = res;
            if (ok.size()) {
              ok.erase(ok.begin(), ok.end());
            }
            ok.push_back(k);
          }
        }
        cout << ok[0] << endl;
        return 0;
      }
    }
  }
  return 0;
}
