#include <bits/stdc++.h>
using namespace std;
int main() {
  string str;
  vector<string> vs;
  vector<string> nm;
  cin >> str;
  int cnt = 0, ln = str.size();
  string token = "";
  string ext = "";
  for (int i = 0; i < ln; i++) {
    if (str[i] == '.') {
      int sz = token.size();
      if (((cnt == 0 && sz > 0) || (cnt > 0 && sz > 1)) && sz < 12) {
        vs.push_back(token);
      } else {
        cout << "NO" << endl;
        return 0;
      }
      token = "";
      cnt++;
    } else {
      token += str[i];
    }
  }
  ln = vs.size();
  if (ln == 0) {
    cout << "NO" << endl;
    return 0;
  }
  if (vs[0].size() > 8) {
    cout << "NO" << endl;
    return 0;
  }
  if (token.size() > 0 && token.size() < 4) {
    vs.push_back(token);
  } else {
    cout << "NO" << endl;
    return 0;
  }
  string name = vs[0];
  ln = vs.size();
  for (int i = 1; i < ln - 1; i++) {
    int sz = vs[i].size();
    if (sz <= 3) {
      nm.push_back(name + "." + vs[i].substr(0, 1));
      name = vs[i].substr(1, sz - 1);
    } else {
      nm.push_back(name + "." + vs[i].substr(0, 3));
      name = vs[i].substr(3, sz - 3);
    }
  }
  nm.push_back(name + "." + vs[ln - 1]);
  ln = nm.size();
  cout << "YES" << endl;
  for (int i = 0; i < ln; i++) {
    cout << nm[i] << endl;
  }
  return 0;
}
