#include <bits/stdc++.h>
using namespace std;
string name;
vector<string> v;
vector<int> d;
void init() {
  cin >> name;
  int n = name.size(), ind = 0, cnt_dost, n3xt;
  for (int i = 0; i <= n - 1; i++)
    if (name[i] == '.') d.push_back(i);
  if (d.empty()) {
    cout << "NO\n";
    return;
  }
  int cnt_dots = d.size();
  if (d[0] == 0 || d[0] > 8 || d[cnt_dots - 1] == n - 1) {
    cout << "NO\n";
    return;
  }
  if (cnt_dots > 1)
    for (int i = 1; i <= cnt_dots - 1; i++)
      if (d[i] - d[i - 1] > 12 || d[i] - d[i - 1] < 2) {
        cout << "NO\n";
        return;
      }
  string curr_name = "";
  for (int i = 0; i <= cnt_dots - 1; i++) {
    curr_name = "\0";
    for (int j = ind; j <= d[i]; j++) curr_name.push_back(name[j]);
    int n3xt_dot;
    ind = d[i] + 1;
    if (i == cnt_dots - 1)
      n3xt = n;
    else
      n3xt = d[i + 1];
    if (i == cnt_dots - 1)
      if (n - d[i] < 5) {
        for (int k = ind; k <= n - 1; k++) curr_name.push_back(name[k]);
        v.push_back(curr_name);
        break;
      } else {
        cout << "NO\n";
        return;
      }
    if (n3xt - d[i] <= 2) {
      cout << "NO\n";
      return;
    }
    if (n3xt - d[i] == 3) {
      curr_name.push_back(name[ind]);
      ind++;
      v.push_back(curr_name);
      continue;
    }
    if (n3xt - d[i] == 4) {
      curr_name.push_back(name[ind]);
      ind++;
      curr_name.push_back(name[ind]);
      ind++;
      v.push_back(curr_name);
      continue;
    }
    if (n3xt - d[i] > 4) {
      curr_name.push_back(name[ind]);
      ind++;
      curr_name.push_back(name[ind]);
      ind++;
      curr_name.push_back(name[ind]);
      ind++;
      v.push_back(curr_name);
      continue;
    }
  }
  cout << "YES\n";
  for (int i = 0; i <= v.size() - 1; i++) cout << v[i] << endl;
}
int main() {
  init();
  return 0;
}
