#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>
#include <climits>
#include <cstring>
#include <cassert>


using namespace std;
#define SZ(x) (int)(x.size())
#define REP(i, n) for(int i=0;i<n;++i)
#define FOR(i, a, b) for(int i=a;i<b;++i)
#define RREP(i, n) for(int i=n-1;i>=0;--i)
#define RFOR(i, a, b) for(int i=b-1;i>=a;--i)

#define all(x) begin(x),end(x)
#define dump(x) cerr<<#x<<" = "<<(x)<<endl
#define debug(x) cerr<<#x<<" = "<<(x)<<" (L"<<__LINE__<<")"<< endl;

using ll = long long;
using vi = vector<int>;
using vvi = vector<vi>;
using vll = vector<ll>;
using vvll = vector<vll>;
using P = pair<int, int>;
const double eps = 1e-8;
const ll MOD = 1000000007;
const int INF = INT_MAX / 2;
const ll LINF = LLONG_MAX / 2;

template<class T>
bool chmax(T &a, const T &b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}

template<class T>
bool chmin(T &a, const T &b) {
    if (b < a) {
        a = b;
        return true;
    }
    return false;
}


template<typename T1, typename T2>
ostream &operator<<(ostream &os, const pair<T1, T2> p) {
    os << p.first << ":" << p.second;
    return os;
}

template<class T1, class T2>
ostream &operator<<(ostream &os, const map<T1, T2> &mp) {
    os << "[";
//    REP(i, SZ(mp)) {
//        if (i) os << ", ";
//        os << mp[i];
//    }
    for (auto e : mp) {
        os << e << ", ";
    }
    return os << "]";
}

template<class T>
ostream &operator<<(ostream &os, const vector<T> &v) {
    os << "[";
    REP(i, SZ(v)) {
        if (i) os << ", ";
        os << v[i];
    }
    return os << "]";
}

// edit
using State = string::const_iterator;

//map<string, map<string, string>> tree; // first :
vector<map<string, int>> tree;

int indent(string s) {
    int ret = 0;
    while (s[ret] == ' ') {
        ret++;
    }
    return ret;
}

bool key_only(string s) {
    auto it = s.begin();
    while (*it == ' ') it++;
    while (*it != ':') {
        it++;
    }
    it++;
    return it == s.end();
}

string get_key(string s) {
    auto it = s.begin();
    while (*it == ' ') it++;
    string key;
    while (*it != ':') {
        key += *it;
        it++;
    }
    return key;
}

pair<string, string> get_kv(string s) {
    auto it = s.begin();
    while (*it == ' ') it++;
    string key;
    string val;
    while (*it != ':') {
        key += *it;
        it++;
    }
    it++; // ':'
    it++; // ' '

    while (it != s.end()) {
        val += *it;
        it++;
    }

    return make_pair(key, val);
}

vector<string> split(string s, char c = '.') {
    auto it = s.begin();
    it++;
    vector<string> ret(1);
    while (it != s.end()) {
        if (*it != '.') {
            ret.back().push_back(*it);
        } else {
            ret.emplace_back("");
        }
        it++;
    }

    return ret;
}

void solve() {
    string query;
    getline(cin, query);
    string yaml;
    string buf;

    tree.resize(1);
//    int level = 0;
//    int idx = 0;
    stack<pair<int, int>> st;
    st.push(make_pair(-1, 0)); // level, idx


    while (getline(cin, buf)) {

//        int pre_level = st.top();
        int cur_level = indent(buf);

        while (cur_level <= st.top().first) {
            st.pop();
        }

        int idx = st.top().second;

//        st.push(make_pair(cur_level, idx));

//        st.push(cur_level);

        if (!key_only(buf)) {
            string key, val;
            tie(key, val) = get_kv(buf);

            int next = SZ(tree);
            tree.push_back(map<string, int>());
            tree[idx][key] = next;
            tree[next][val] = -1;

        } else {
            int next = SZ(tree);
            tree.push_back(map<string, int>());
            string key = get_key(buf);
            tree[idx][key] = next;
            idx = next;

//            st.pop();
            st.push(make_pair(cur_level, idx));
        }

    }

//    cerr << tree << endl;

//    cout << split(query) << endl;
    vector<string> queries = split(query);

    int idx = 0;
    for (auto q : queries) {
        if (idx == -1 || !tree[idx].count(q)) {
            // not such property

            cout << "no such property" << endl;
            return;
        }
        idx = tree[idx][q];
    }

    if (idx == -1) {
        cout << "no such property" << endl;
        return;
    }

    if (tree[idx].size() == 1 && tree[idx].begin()->second == -1) {
        cout << "string \"" << tree[idx].begin()->first << '\"' << endl;
    } else {
        cout << "object" << endl;
    }



//    cout << yaml << endl;
//    cout << tree << endl;


}
//void mapping(int n, State &state);
//void mapping_item(int n, State &state);
//string key(State &state);
//string str(State &state);
//string indent(int n, State &state);
//
//
//void mapping(int n, State &state) {
//
//}
//
//void mapping_item(int n, State &state) {
//
//}
//
//string key(State &state) {
//
//}
//
//string str(State &state) {
//
//}
//
//string indent(int n, State &state) {
//
//}



int main() {
    cin.tie(0);
    ios::sync_with_stdio(false);
    cout << fixed << setprecision(10);
//    std::ifstream in("/Users/homesentinel/CLionProjects/CP_14/input.txt");
//    std::cin.rdbuf(in.rdbuf());

    solve();


    return 0;
}



Measured memory_bytes: 3432