#include <bits/stdc++.h>
using namespace std;
static const int INF = 0x3f3f3f3f;
static const long long INFL = 0x3f3f3f3f3f3f3f3fLL;
template <typename T, typename U>
static void amin(T &x, U y) {
  if (y < x) x = y;
}
template <typename T, typename U>
static void amax(T &x, U y) {
  if (x < y) x = y;
}
int main(int argc, char const *argv[]) {
  string s;
  cin >> s;
  long long tot = 0;
  bool flag = false;
  long long tmp = 0;
  long long cnt = 0;
  for (auto c : s) {
    if (isalpha(c)) {
      if (cnt == 3 || flag == false) tmp *= 100;
      cnt = 0;
      tot += tmp;
      tmp = 0;
      flag = false;
      continue;
    }
    if (isdigit(c)) {
      tmp = tmp * 10 + c - '0';
      cnt++;
    } else {
      flag = true;
      cnt = 0;
    }
  }
  if (cnt == 3 || flag == false) tmp *= 100;
  tot += tmp;
  stack<char> ans;
  tmp = tot;
  if (tmp % 100 == 0) {
    tmp /= 100;
    long long cnt = 0;
    while (tmp != 0) {
      ans.push(tmp % 10 + '0');
      tmp /= 10;
      if (tmp != 0 && cnt % 3 == 2) ans.push('.');
      cnt++;
    }
  } else if (tmp < 10) {
    ans.push(tmp + '0');
    ans.push('0');
    ans.push('.');
    ans.push('0');
  } else if (tmp < 100) {
    ans.push(tmp % 10 + '0');
    ans.push(tmp / 10 + '0');
    ans.push('.');
    ans.push('0');
  } else {
    ans.push(tmp % 10 + '0');
    tmp /= 10;
    ans.push(tmp % 10 + '0');
    tmp /= 10;
    ans.push('.');
    long long cnt = 0;
    while (tmp != 0) {
      ans.push(tmp % 10 + '0');
      tmp /= 10;
      if (tmp != 0 && cnt % 3 == 2) ans.push('.');
      cnt++;
    }
  }
  while (ans.size()) {
    cout << ans.top();
    ans.pop();
  }
  return 0;
}
