#include <bits/stdc++.h>
using namespace std;
const bool input = 0;
int main() {
  long long i, j, n;
  char c;
  if (input) {
    freopen("input.txt", "r", stdin);
  }
  int dot = 0;
  int a = 0, b = 0;
  vector<char> x, y, z;
  vector<int> dist;
  bool f = 1;
  bool first = 0;
  while (scanf("%c", &c) && ((c == '.') || (isalpha(c) && islower(c)))) {
    x.push_back(c);
    if (c == '.') {
      dist.push_back(a);
      if (((a < 2 || a > 11) && first) || (!first && (a < 1 || a > 11))) {
        f = false;
      }
      a = 0;
      first = 1;
    } else {
      a++;
    }
  }
  dist.push_back(a);
  if (dist[0] > 8 || dist[dist.size() - 1] > 3 || dist[dist.size() - 1] == 0 ||
      dist.size() == 1)
    f = false;
  if (f == 0)
    cout << "NO";
  else {
    long long cur = 0;
    cout << "YES\n";
    for (i = 0; i < dist[0]; i++) cout << x[i];
    cur = dist[0];
    for (i = 1; i < dist.size() - 1; i++) {
      cout << ".";
      cur++;
      if (dist[i] < 4) {
        cout << x[cur] << "\n";
        for (j = 1; j < dist[i]; j++) {
          cout << x[cur + j];
        }
        cur += dist[i];
      } else {
        for (j = 0; j < 3; j++) cout << x[cur + j];
        cout << "\n";
        for (j = 0; j < dist[i] - 3; j++) {
          cout << x[cur + 3 + j];
        }
        cur += dist[i];
      }
    }
    cout << ".";
    for (j = 0; j < dist[dist.size() - 1]; j++) cout << x[cur + j + 1];
  }
  return 0;
}
