#include <bits/stdc++.h>
using namespace std;
int n;
map<string, int> path;
map<string, vector<string>> host;
map<vector<int>, vector<string>> group;
void add(string s) {
  string h = "", p = "";
  for (int(i) = (7); i < (s.size()); ++(i)) {
    if (s[i] == '/') {
      p = s.substr(i);
      break;
    } else {
      h += s[i];
    }
  }
  path[p] = 1;
  host[h].push_back(p);
}
vector<int> getv(vector<string> w) {
  vector<int> res;
  for (int(i) = (0); i < (w.size()); ++(i)) res.push_back(path[w[i]]);
  sort(res.begin(), res.end());
  vector<int> v;
  for (int(i) = (0); i < (res.size()); ++(i))
    if (i == 0 || (res[i] != res[i - 1])) v.push_back(res[i]);
  return v;
}
int main() {
  ios::sync_with_stdio(0);
  cin >> n;
  string s;
  for (int(i) = (0); i < (n); ++(i)) {
    cin >> s;
    add(s);
  }
  int cnt = 0;
  for (__typeof((path).begin()) it = (path).begin(); it != (path).end(); it++)
    it->second = cnt++;
  for (__typeof((host).begin()) it = (host).begin(); it != (host).end(); it++) {
    vector<int> v = getv(it->second);
    group[v].push_back(it->first);
  }
  vector<vector<string>> ans;
  for (__typeof((group).begin()) it = (group).begin(); it != (group).end();
       it++)
    if (it->second.size() > 1) ans.push_back(it->second);
  cout << ans.size() << endl;
  for (int(i) = (0); i < (ans.size()); ++(i)) {
    for (int(j) = (0); j < (ans[i].size()); ++(j))
      cout << "http://" << ans[i][j] << " ";
    cout << "\n";
  }
}
